【问题标题】:OpenJDK 1.6 and SecureRandom/KeyGenerator (what is available?)OpenJDK 1.6 和 SecureRandom/KeyGenerator(有什么可用的?)
【发布时间】:2011-10-16 08:00:37
【问题描述】:

以下所有结果都是"java.security.NoSuchAlgorithmException: SHA not SecureRandom available"(或类似)。

SecureRandom prng = SecureRandom.getInstance("SHA256");
SecureRandom prng = SecureRandom.getInstance("SHA-256");
SecureRandom prng = SecureRandom.getInstance("SHA1");
SecureRandom prng = SecureRandom.getInstance("SHA-1");
SecureRandom prng = SecureRandom.getInstance("SHA");

以下类似 ("java.security.NoSuchAlgorithmException: SHA KeyGenerator not available"):

KeyGenerator kgen = KeyGenerator.getInstance("SHA256");
KeyGenerator kgen = KeyGenerator.getInstance("SHA-256");
KeyGenerator kgen = KeyGenerator.getInstance("SHA1");
KeyGenerator kgen = KeyGenerator.getInstance("SHA-1");
KeyGenerator kgen = KeyGenerator.getInstance("SHA");

OpenJDK 中有哪些可用的生成器?根据Standard Algorithm Names,看起来应该可以使用 SHA 系列(至少对于 SecureRandom)。

对于蹩脚的 Java 问题,我们深表歉意。我是一个 Crypto++ 和 OpenSSL 类型的人,谷歌正在返回很多噪音。如果重要的话,我正在 Eclipse 中工作。

杰夫

【问题讨论】:

    标签: java cryptography key-generator


    【解决方案1】:

    我认为这对你有帮助

    http://www.java2s.com/Code/Java/Security/ListAllProviderAndItsAlgorithms.htm

    检查一下。祝你好运!

    【讨论】:

    • 好的,谢谢。例如 NIST、NESSIE 和 ECRYPT 现在需要 SHA-256(有些人放弃,SHA-1 仍然可以用于密钥派生)。我不明白为什么必须为所需的算法跳过障碍(这不像我要的是 Skein 或 SHA-3 候选人)。
    【解决方案2】:

    KeyGenerator 有documentation。 SHA* 是哈希,而不是加密算法。在 KeyGenerator 的上下文中使用 SHA* 几乎没有意义。

    对于 SecureRandom(顺便说一下,它也有 documentation)你最好不要指定算法,除非你有特定的要求并且你知道你在做什么(就像你知道你正在尝试使用的提供者一样)

    我能想到的唯一联系是 Sun JCE SecureRandom 实际上在下面使用 SHA1PRNG。

    【讨论】:

    • “在 KeyGenerator 的上下文中使用 SHA* 几乎没有意义” - 也许我已断开连接(很可能)。我想使用 SHA-256 生成一个伪随机流,将生成的字节填充到密钥中,然后在密码中使用密钥。没什么大不了的。
    • “Sun JCE SecureRandom 实际上使用 SHA1PRNG” - 很有趣,因为它没有列在 Java 的 JCE 标准算法名称下(现在提供参考)。
    • 标准 Java 中的 SecureRandom 仅执行基于 SHA1 的随机。因此,如果您想根据来自其他随机源的字节(例如执行不同哈希的 IAIK JCE)实例化密钥对象,只需获取字节并启动您想要的密钥(AES 等)
    • SHA3 keccak 有什么用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2012-02-03
    • 2018-07-01
    • 1970-01-01
    • 2011-01-25
    • 2021-07-14
    相关资源
    最近更新 更多