Ниже мой Java-код для DES дешифрования:DES дешифрования в Рубине
public static byte[] decrypt(final byte[] value, final String key) throws InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchPaddingException, UnsupportedEncodingException, InvalidKeySpecException, IllegalBlockSizeException, BadPaddingException {
final DESKeySpec objDesKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
final SecretKeyFactory objKeyFactory = SecretKeyFactory.getInstance("DES");
final SecretKey objSecretKey = objKeyFactory.generateSecret(objDesKeySpec);
final byte[] rgbIV = key.getBytes();
final IvParameterSpec iv = new IvParameterSpec(rgbIV);
final Cipher objCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
objCipher.init(2, objSecretKey, iv);
return objCipher.doFinal(value);
}
И я стараюсь, чтобы преобразовать его в Ruby-кода в следующем:
def decryption(key, decodeString)
ALG = 'des'
cipher = OpenSSL::Cipher::Cipher.new(ALG)
cipher.decrypt #choose descryption mode.
cipher.key = key
plain = cipher.update(decodeString)
plain << cipher.final
end
После выполнения Java и рубин кода, я получил одинаковый размер байтов, но содержимое байтов отличается. Где я неправ?
Вы должны попытаться найти соответствующие ключевые слова и попытаться выполнить свою собственную реализацию, прежде чем искать решение на SO. –
Stack Overflow не является сервисом преобразования кода. Вместо этого вам нужно попытаться найти решение, и когда вы столкнетесь с проблемами, задайте вопрос. –
Возможный дубликат [Как выполнить вычисления Triple DES в Ruby в шестнадцатеричном формате?] (Http://stackoverflow.com/questions/3149288/how-to-perform-triple-des-calculations-in-ruby-in-hexadecimal) – Alexander