每个人都在谈论密码中的填充方案,但是需要传递给密码的实际字符串是什么?我不在乎它们是对称的还是非对称的,我只想要一个可能的值列表。
答案 0 :(得分:47)
有许多类型的填充,PKCS-7,Zero,ISO 10126,ANSI X.923等。
我建议你阅读padding因为你似乎没有完全理解这个概念。
然后你可能会提到加密salt。
修改强>
Java平台的每个实现都需要支持以下标准Cipher转换,并在括号中包含密钥:
您可以找到列表here。
编辑2
你可以找到Bouncy Castle规范here。它列出了所有可用的填充方案。
答案 1 :(得分:10)
块密码需要填充,流密码不需要。块密码需要填充,因为它们会对整个块进行加密,并且您的消息可能与整个块不完全匹配。填充用于将消息长度扩展到下一个块边界。
有关详细信息,请参阅Cryptographic padding上的维基百科文章。
对于大多数用途,使用PKCS#7(aka PKCS#5)填充:n个字节,全部值n:
01
02 02
03 03 03
...
10 10 10 10 ... 10 10