首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java不支持SHA-512?

Java不支持SHA-512?
EN

Stack Overflow用户
提问于 2013-02-17 12:36:44
回答 5查看 22.9K关注 0票数 5
代码语言:javascript
复制
try {
        MessageDigest digest = MessageDigest.getInstance("SHA-512");
        byte[] output = digest.digest(password);

        digest.update(salt);
        digest.update(output);
        return new BigInteger(1, digest.digest());
    } catch (NoSuchAlgorithmException e) {
        throw new UnsupportedOperationException(e);
    }

但是我得到了Exception in thread "main" java.security.NoSuchAlgorithmException: SHA_512 MessageDigest not available错误

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-17 12:52:38

我想说,最可能的解释是,您的实际代码使用的是"SHA_512"而不是"SHA-512"。当然,这可以解释为什么异常消息中会有下划线。

另一种可能性是,由于美国的出口限制,您有一个删除了“军事强度”加密算法的JVM。然而,我认为这是不太可能的。

(事实上,我对this的理解是,SHA-512无论如何都包含在默认的“太阳”提供程序的所有版本中。)

票数 12
EN

Stack Overflow用户

发布于 2013-02-17 12:50:00

下面是Java MessageDigest提供的standard hashing algorithms

  • MD2
  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

您可能需要验证提供给工厂方法的名称。

票数 16
EN

Stack Overflow用户

发布于 2015-10-16 22:42:40

下面是通过SHA-512获取哈希串的示例方法:

代码语言:javascript
复制
private static String getHashCodeFromString(String algorithm, String str) throws NoSuchAlgorithmException {
    MessageDigest md = MessageDigest.getInstance(algorithm);
    md.update(str.getBytes());
    byte byteData[] = md.digest();

    //convert the byte to hex format method 1
    StringBuffer hashCodeBuffer = new StringBuffer();
    for (int i = 0; i < byteData.length; i++) {
        hashCodeBuffer.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
    }
    return hashCodeBuffer.toString();
}

使用SHA-512作为算法。转到下面的链接,获取其他可能的算法名称,您可以在方法中传递。https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#MessageDigest

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14918020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档