2015-06-07 2 views
0

Я хочу использовать следующий код в классе ActionListener.Hashing String (SHA-256) в классе 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 классе. Как я могу это решить?

+0

взгляните на этот ответ http://stackoverflow.com/questions/4659929/how-to-use-utf-8-in-resource-properties-with-resourcebundle –

ответ

1

Вы знаете заранее, что MessageDigest.getInstance("SHA-256") и key.getBytes("UTF-8") будет успешным, поэтому лучшим решением является обернуть примерочных улов вокруг невозможных проверяемых исключений:

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, в соответствии с требованиями контракта.

+0

спасибо, что это помогло много – fihdi

Смежные вопросы