參考:
https://github.com/stivlo/obliquid-lib/blob/master/src/main/java/org/obliquid/helpers/StringHelper.java
http://stackoverflow.com/questions/4769007/can-you-get-this-same-java-sha-1-in-php-please
說明:兩種語言的SHA1加密方式不一樣,如果不修改程式結果永遠也不會一樣。我試了很多次了。最後參考國外的stack,ˊ終於有我要的結果。主要是因為做的東西網站會員要跟APP公用。所以要在APP端達到一樣的加密方式。
程式碼:
private static final String HEX_DIGITS = "0123456789abcdef";
public static String computeSha1OfString(String arg) {
try {
return computeSha1OfByteArray(arg.getBytes(("UTF-8")));
} catch (UnsupportedEncodingException ex) {
throw new UnsupportedOperationException(ex);
}
}
private static String computeSha1OfByteArray(byte[] arg) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(arg);
byte[] res = md.digest();
return toHexString(res);
} catch (NoSuchAlgorithmException ex) {
throw new UnsupportedOperationException(ex);
}
}
private static String toHexString(byte[] v) {
StringBuilder sb = new StringBuilder(v.length * 2);
for (int i = 0; i < v.length; i++) {
int b = v[i] & 0xFF;
sb.append(HEX_DIGITS.charAt(b >>> 4)).append(HEX_DIGITS.charAt(b & 0xF));
}
return sb.toString();
}