私がやろうとしているのは、jPasswordFieldに入力されたパスワードをSHA-256ハッシュに変換することです。私は歩き回っていて、パスワードを文字列として保存している場合にこれを行う方法を見つけましたが、使用しているフィールドはchar []を返しているので、どうすればよいかを推測することになりました...最初はパスワードが同じであっても結果は異なりますが、定数であるため、今では私はより近くにいると思います。しかし、それはまだの出力としてではありません
echo -n 'abc' | sha256sum
は
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
私のアクションの出力(同じ入力に対する)は
86900f25bd2ee285bc6c22800cfb8f2c3411e45c9f53b3ba5a8017af9d6b6b05
私の行動は次のようになります:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
NoSuchAlgorithmException noSuchAlgorithmException = null;
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException ex) {
noSuchAlgorithmException = ex;
}
if (noSuchAlgorithmException != null) {
System.out.println(noSuchAlgorithmException.toString());
}
else {
UnsupportedEncodingException unsupportedEncodingException = null;
byte[] hash = null;
char[] password = jPasswordField1.getPassword();
StringBuffer stringBuffer = new StringBuffer();
for (char c : password) {
if (c > 0 && c < 16) {
stringBuffer.append("0");
}
stringBuffer.append(Integer.toHexString(c & 0xff));
}
String passwordString = stringBuffer.toString();
try {
hash = messageDigest.digest(passwordString.getBytes("UTF-8"));
} catch (UnsupportedEncodingException ex) {
unsupportedEncodingException = ex;
}
if (unsupportedEncodingException != null) {
System.out.println(unsupportedEncodingException.toString());
}
else {
stringBuffer = new StringBuffer();
for (byte b : hash) {
stringBuffer.append(String.format("%02x", b));
}
String passwordHashed = stringBuffer.toString();
System.out.println(passwordHashed);
}
}
何か案は?