我想在ActionListener类中使用以下代码。

MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(key.getBytes("UTF-8"));

BigInteger HashValue = new BigInteger(javax.xml.bind.DatatypeConverter.printHexBinary(hash).toLowerCase(), 16);
String HashValueString = HashValue.toString();


但是"SHA-256""UTF-8"不能以任何方式导入。在控制台程序中执行此操作时,可以使用以下方法解决此问题:

public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException


但是我不能上ActionListener课。我该如何解决?

最佳答案

您已经预先知道MessageDigest.getInstance("SHA-256")key.getBytes("UTF-8")将成功,所以最好的解决方案是将try-catch包装在不可能的已检查异常周围:

try {
    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    byte[] hash = digest.digest(key.getBytes("UTF-8"));
    BigInteger HashValue = new BigInteger(javax.xml.bind.DatatypeConverter.printHexBinary(hash).toLowerCase(), 16);
    String HashValueString = HashValue.toString();
    // ... The rest of your code goes here ....

} catch (NoSuchAlgorithmException e) {
    throw new AssertionError(e);
} catch (UnsupportedEncodingException e) {
    throw new AssertionError(e);
}


现在,使用此代码,您无需按照合同的要求在throws方法上声明ActionListener

关于java - 在ActionListener类中的哈希字符串(SHA-256),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30698734/

10-11 12:42