java中的密码填充字符串是什么?

时间:2012-06-07 15:35:43

标签: java padding jce

每个人都在谈论密码中的填充方案,但是需要传递给密码的实际字符串是什么?我不在乎它们是对称的还是非对称的,我只想要一个可能的值列表。

2 个答案:

答案 0 :(得分:47)

有许多类型的填充,PKCS-7,Zero,ISO 10126,ANSI X.923等。
我建议你阅读padding因为你似乎没有完全理解这个概念。

然后你可能会提到加密salt

修改
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)

您可以找到列表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