0

我正在将一个 api 从 php 转换为 java,我编写了以下代码来模拟 php 的 sha1 方法。问题是当它创建新的格式化程序对象时,我得到一个FileNotFoundException,调试我发现它找不到“sunrsasing.jar”,通过stackoverflow我发现:

我正在阅读它,以便在 JDK5 之前,它位于您提到的 sun 提供的单独 jar 中。之后,它作为 JDK 的一部分分发,而不是作为单独的 jar。块引用

所以我的问题是,除了从其他来源复制和粘贴 jar 之外,还有什么方法可以修复错误?如果没有,我在哪里可以找到它?

private static String encryptPassword(String password)
{
    String sha1 = "";
    try
    {
        MessageDigest crypt = MessageDigest.getInstance("SHA-1");
        crypt.reset();
        crypt.update(password.getBytes("UTF-8"));
        sha1 = byteToHex(crypt.digest());
    }
    catch(NoSuchAlgorithmException e)
    {
        e.printStackTrace();
    }
    catch(UnsupportedEncodingException e)
    {
        e.printStackTrace();
    }
    return sha1;
}



private static String byteToHex(final byte[] hash)
{
    Formatter formatter = new Formatter();
    for (byte b : hash)
    {
        formatter.format("%02x", b);
    }
    String result = formatter.toString();
    formatter.close();
    return result;
}
4

1 回答 1

0

java.util.Formatter从 Java 5 开始可用,所以我猜你使用的是旧版本。为了获得更好的兼容性,您可以使用byteToHex()不需要该类的方法的不同实现。例如,请参阅如何在 Java 中将字节数组转换为十六进制字符串?.

于 2013-07-01T11:04:44.953 回答