如何使IvParameterSpec随机但仍然解密

Mic*_*man 6 java encryption

对于Java中的加密... http://cwe.mitre.org/data/definitions/329.html上的文章指出初始化向量每次都应该不同,但是如果我使用不同的IV来解密而不是我以前加密,我得到垃圾字符而不是我期望的数据.

什么是在一台服务器上加密并在另一台服务器上解密而不必在服务器之间来回传递IV的正确方法?

常见的技术似乎是硬编码一个字节数组,但据说这是不安全的???

Jon*_*eet 10

相信 IV就像一个盐 - 它不是一个秘密,它只是用于引入一个额外的随机元素,以便每次使用相同的密钥加密的相同消息仍然不同.

因此,您可以将用于加密的IV作为加密值的一部分进行传输,就像您将盐与哈希值一起存储为散列值一样.

当然,我可能完全不正确......

  • 这是正确的,则IV与纯文本的第一块,然后用该密钥加密异或门.剩余的块与前一个块进行异或.这称为密码块链接(CBC).您必须使用与以前加密相同的IV进行解密.这不是秘密,可以发送/存储.每次加密数据时都应该随机生成一个新的IV.其目的是随机性添加到加密的数据,所以相同的数据,使用相同的密钥加密,就会产生不同的密文. (2认同)