32

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

4

2 回答 2

51

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

然后有可能您指的是加密salt

编辑
Java 平台的每个实现都需要支持以下标准密码转换,括号中的密钥大小:

  • AES/CBC/NoPadding (128)
  • AES/CBC/PKCS5Padding (128)
  • AES/ECB/无填充 (128)
  • AES/ECB/PKCS5 填充 (128)
  • DES/CBC/无填充 (56)
  • DES/CBC/PKCS5填充 (56)
  • DES/ECB/无填充 (56)
  • DES/ECB/PKCS5填充 (56)
  • DESede/CBC/NoPadding (168)
  • DESede/CBC/PKCS5Padding (168)
  • DESede/ECB/无填充 (168)
  • DESede/ECB/PKCS5Padding (168)
  • RSA/ECB/PKCS1填充(1024、2048)
  • RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
  • RSA/ECB/OAEPWithSHA-256AndMGF1Padding(1024、2048)

你可以在这里找到一份清单。

编辑 2您可以在此处
找到 Bouncy Castle 规范。它列出了所有可用的填充方案。

于 2012-06-07T15:49:20.243 回答
10

块密码需要填充,流密码不需要。块密码需要填充,因为它们会加密整个块,并且您的消息可能与整个块数不完全匹配。填充用于将消息长度扩展到下一个块边界。

有关详细信息,请参阅有关加密填充的 Wikipedia 文章。

对于大多数目的,使用 PKCS#7(又名 PKCS#5)填充:n 个字节,所有值 n:

01
02 02
03 03 03
...
10 10 10 10 ... 10 10
于 2012-06-07T16:33:47.913 回答