java中的密码填充字符串是什么?
每个人都在讨论密码中的填充方案,但是需要传递给密码的实际字符串是什么? 我不在乎它们是对称的还是非对称的,我只想要一个可能的值列表。
有许多类型的填充,PKCS-7,Zero,ISO 10126,ANSI X.923等。
我建议你阅读填充,因为你似乎没有完全理解这个概念。
那么你有可能指的是加密盐 。
编辑
Java平台的每个实现都需要支持以下标准Cipher转换,并在括号中使用密钥:
- AES / CBC / NoPadding(128)
- AES / CBC / PKCS5Padding(128)
- AES / ECB / NoPadding(128)
- AES / ECB / PKCS5Padding(128)
- DES / CBC / NoPadding(56)
- DES / CBC / PKCS5Padding(56)
- DES / ECB / NoPadding(56)
- DES / ECB / PKCS5Padding(56)
- DESede / CBC / NoPadding(168)
- DESede / CBC / PKCS5Padding(168)
- DESede / ECB / NoPadding(168)
- DESede / ECB / PKCS5Padding(168)
- RSA / ECB / PKCS1Padding(1024,2048)
- RSA / ECB / OAEPWithSHA-1AndMGF1Padding(1024,2048)
- RSA / ECB / OAEPWithSHA-256AndMGF1Padding(1024,2048)
你可以在这里找到一个列表。
编辑2
您可以在这里找到Bouncy Castle规范。 它列出了所有可用的填充方案。
块密码需要填充,流密码不需要。 块密码需要填充,因为它们会加密整个块,并且您的消息可能与整个块不完全匹配。 填充用于将消息长度扩展到下一个块边界。
有关详细信息,请参阅维基百科有关加密填充的文章。
对于大多数用途,使用PKCS#7(aka PKCS#5)填充:n个字节,全部值n:
01 02 02 03 03 03 ... 10 10 10 10 ... 10 10