Javaを使用してSHA-1チェックサムを生成するコードを書いています。このリンクhttp://code.wikia.com/wiki/SHA_checksumを参照しました。私のJavaコードは以下の通りです:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHAHashing{
public static void main(String[] args)throws Exception{
String password = "ABC0010|txnpassword|0|Test Reference|1.00|20110616221931";
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(password.getBytes("UTF-8"));
System.out.println("Converting SHA digest output to Hex String : "+byteArrayToHexString(SHAsum(password.getBytes("UTF-8"))));
System.out.println("Converting md.digest output to Hex String : "+byteArrayToHexString(md.digest()));
}
public static byte[] SHAsum(byte[] convertme) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return md.digest(convertme);
}
public static String byteArrayToHexString(byte[] b) {
String result = "";
for (int i=0; i < b.length; i++) {
result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
}
return result;
}
}
上記の出力は次のとおりです。
SHA ダイジェスト出力を 16 進文字列に変換:
7871d5c9a366339da848fc64cb32f6a9ad8fcadd
md.digest 出力を 16 進文字列に変換:7871d5c9a366339da848fc64cb32f6a9ad8fcadd
入力文字列があります:"ABC0010|txnpassword|0|Test Reference|1.00|20110616221931"
対応する出力は:01a1edbb159aa01b99740508d79620251c2f871d
フィンガープリントを生成するために参照用に使用しているドキュメントに従ってです。
上記について誰か洞察を提供してください。