【问题标题】:What are the cipher padding strings in javajava中的密码填充字符串是什么
【发布时间】:2012-06-11 16:47:35
【问题描述】:

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

【问题讨论】:

  • 这将是一个无限列表。
  • 你说的是盐吧?这些通常是唯一的,并且可能是随机生成的。
  • 不谈盐。我想要一个可能的填充列表,例如:NOPADDING、ANSIX923Padding、PKCS5Padding、PKCS7Padding、ISO10126Padding 等。为什么没有包含在内的列表?
  • 这个问题表面上似乎要求在填充中使用实际字节,而不是算法标识符。
  • @bmargulies 怎么样? what are the actual strings 在问题中是明确的!

标签: java padding jce


【解决方案1】:

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

那么您可能指的是密码salt

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

  • 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。它列出了所有可用的填充方案。

【讨论】:

  • 我确实理解这个概念并且有很多类型。我很难找到在给定情况下使用的有效字符串。我也明白什么是盐了!如果它包含指向有效字符串列表的链接,您的答案会很有帮助。
  • 您似乎没有完全理解这个概念,因为您要求的是“有效的字符串列表”。对于每种类型的填充,“列表”会有所不同。对于零填充,它非常简单:0、00、000、0000、0000 等。您需要阅读不同类型的填充。
  • 请向我解释为什么我将算法、模式和填充作为字符串传递给提供者以获取密码实例?即:“AES/CTR/PKCS5Padding”
  • 谢谢,我有所有的算法和模式,我只需要一个完整的填充方案列表。这个列表是所有 Java 平台的基本实现,显然还有其他的。特别是,我使用 Bouncycastle 与 Microsoft 堆栈进行互操作。你能指出他们填充方案的方向吗?他们的文档没有列出他们接受的可能字符串,至少不是我能找到的。
【解决方案2】:

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

有关详细信息,请参阅Cryptographic padding 上的维基百科文章。

在大多数情况下,使用 PKCS#7(又名 PKCS#5)填充:n 字节,所有值 n:

01
02 02
03 03 03
...
10 10 10 10 ... 10 10

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2022-01-19
    • 2018-11-21
    相关资源
    最近更新 更多