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

Roy*_*ley 28 java jce padding

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

San*_*nen 48

有很多类型的填充,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规范.它列出了所有可用的填充方案.

  • 我理解这个概念,并且有很多类型.我找不到的是在给定情况下使用的有效字符串.我也明白盐是什么!如果它包含指向有效字符串列表的链接,那么您的答案会很有帮助. (2认同)
  • 请解释为什么我将算法,模式和填充作为字符串传递给提供者以获得密码实例呢?即:"AES/CTR/PKCS5Padding" (2认同)

ros*_*sum 10

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

有关详细信息,请参阅维基百科有关加密填充的文章.

对于大多数用途,使用PKCS#7(aka PKCS#5)填充:n个字节,全部值n:

01
02 02
03 03 03
...
10 10 10 10 ... 10 10
Run Code Online (Sandbox Code Playgroud)