Ger*_*ári 1 php java hash sha1 equality
我用的是什么:
Java的:
public String sha1(String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++)
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
Run Code Online (Sandbox Code Playgroud)
结果:
java: System.out.println(sha1("foobar123dsadn23u1wdqqwdyxdasd"));
php: echo sha1('foobar123dsadn23u1wdqqwdyxdasd');
php: d8033103e9aaf67af13a4b45534b2d0f6d8dfded
java: d83313e9aaf67af13a4b45534b2df6d8dfded
Run Code Online (Sandbox Code Playgroud)
为什么两个哈希不一样?
这是因为Integer.toHexString
如果数字小于16,在Java中不会打印两个数字.因此,例如8变为8
而不是08
.
您需要对数字进行属性格式化.这应该这样做:
hexString.append(String.format("%02X", 0xFF & messageDigest[i]));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3814 次 |
最近记录: |