javaaes加密问题
每次使用AES更改加密值时,请让任何人调查以下代码并告诉我问题 代码: 输出 我第一次得到下面的加密字符串javaaes加密问题,java,encryption,aes,salt,crypt,Java,Encryption,Aes,Salt,Crypt,每次使用AES更改加密值时,请让任何人调查以下代码并告诉我问题 代码: 输出 我第一次得到下面的加密字符串 CZRIP35M4CnJtuDQ6YpmaQ== /fylTjohAZDsnCaHhiZo3A== 第二次我得到下面的加密字符串 CZRIP35M4CnJtuDQ6YpmaQ== /fylTjohAZDsnCaHhiZo3A== 我有三个问题: 为什么加密字符串不是常量 如何设置块大小?(AES.BlockSize=128;) 如何设置填充模式?(AES.Padding=Paddi
CZRIP35M4CnJtuDQ6YpmaQ==
/fylTjohAZDsnCaHhiZo3A==
第二次我得到下面的加密字符串
CZRIP35M4CnJtuDQ6YpmaQ==
/fylTjohAZDsnCaHhiZo3A==
我有三个问题:
AES.BlockSize=128;
)AES.Padding=PaddingMode.PKCS7;
)Cipher.getInstance()
更改为AES/CBC/PKCS7Padding
Cipher.getInstance()
更改为AES/CBC/PKCS7Padding
除了@micker提供的答案之外,您还需要调用另一个版本的
Cipher.init()
;一个考虑到第四个因素的因素:
...
byte[] iv = new byte[16];
IvParameterSpec ivSpec = new IvParameterSpec(iv); // <= Wrap your IV bytes here.
SecretKeySpec secret = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret, ivSpec); // <= Add IV here.
...
。。。
字节[]iv=新字节[16];
IvParameterSpec ivSpec=新的IvParameterSpec(iv);// 除了@micker提供的答案之外,您还需要调用另一个版本的Cipher.init()
;一个考虑到第四个因素的因素:
...
byte[] iv = new byte[16];
IvParameterSpec ivSpec = new IvParameterSpec(iv); // <= Wrap your IV bytes here.
SecretKeySpec secret = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret, ivSpec); // <= Add IV here.
...
。。。
字节[]iv=新字节[16];
IvParameterSpec ivSpec=新的IvParameterSpec(iv);//salt值在每次执行时都会改变吗?@Freiheit抱歉,我不知道如何检查salt值?当我打印salt值时,它会显示为[0,0,0,0,0,0,0,0,0,0,0,0,0],你是否意识到你总是使用一个充满0的字节数组作为键,并且前4行代码没有任何作用?你也从不使用静脉注射?你为什么关心输出?重要的是它可以用相同的密钥解密。salt的值在每次执行时都会改变吗?@Freiheit抱歉,我不知道如何检查salt的值。当我打印salt的值时,它会显示为[0,0,0,0,0,0,0,0,0,0,0],你意识到你总是使用一个充满0的字节数组作为你的密钥吗,而且前4行代码什么都不做?你也从不使用静脉注射?你为什么关心输出?重要的是它可以用相同的密钥解密。CBC IV必须。CBC IV必须。1。嗯,有点,但是IV和盐是不能互换的。2.对3.第一。嗯,有点,但是IV和盐是不能互换的。2.对3.不