小编pom*_*vdp的帖子

AES java编码,ruby解码

我正在尝试对java中的数据进行AES编码,通过网络发送并在ruby中对其进行解码.

使用基本字符串可以正常工作,但是一旦字符串的长度为16个字节或更多,我就会在解码的ruby字符串的编码中产生垃圾.我想它与填充有关(不确定,因为它影响甚至大小为16的字符串)

我尝试使用PKCS或只是在我的字符串末尾添加空格以匹配确切的长度而没有运气

也有人可以解释为什么我必须在红宝石中做一个"aes-256-cbc"知道我的java代码使用aes 128?在ruby中尝试aes-128-cbc对任何字符串都不起作用

任何帮助是极大的赞赏

这是我的基本代码

Java的

byte[] raw = key.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(str.getBytes());
return new BASE64Encoder().encode(encrypted);
Run Code Online (Sandbox Code Playgroud)

红宝石

def aes_decrypt(key, encrypted)
decipher =OpenSSL::Cipher::Cipher.new("aes-256-cbc")
decipher.decrypt
decipher.padding = 0
decipher.key = key
d = decipher.update(encrypted)
d << decipher.final
logger.debug "email  #{d.to_s}"
return d.to_s
end
Run Code Online (Sandbox Code Playgroud)

ruby java aes

7
推荐指数
1
解决办法
4069
查看次数

标签 统计

aes ×1

java ×1

ruby ×1