在计算SHA 256时出错了

时间:2013-12-17 07:28:40

标签: java hash sha256

我需要为我的密码计算SHA 256。

我已经知道我可以从apache使用通用编解码器,但这不允许在我工作的地方

我试图创建一个简单的函数来从纯文本中返回sha 256,即:

public static String getSHA1(String plainText) {
        MessageDigest md;
        try {
            md = MessageDigest.getInstance("SHA-256");

            md.update(plainText.getBytes());
            StringBuffer hexString = new StringBuffer();
            for (int i = 0; i < md.digest().length; i++) {
                hexString.append(Integer.toHexString(0xFF & md.digest()[i]));
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

我的问题是输入是什么,结果是一样的。我总是得到这个结果

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

我可以使用这个网站http://onlinemd5.com/

在线计算sha 256

但我需要从我的代码中计算出来。

你的帮助很受欢迎。

1 个答案:

答案 0 :(得分:3)

来自digest()的Javadoc:

  

通过执行填充等最终操作来完成哈希计算。 完成此次通话后,摘要会重置。

调用digest()一次,然后将结果放入变量中。

(顺便说一下,如果你搜索了摘要,每当你得到一个固定的结果时总是一个好主意,你会看到它是空字符串的SHA-256摘要。)