PHP的Sha1轉成Java的Sha1[PHP][Android]

 參考:

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();
}

留言

此網誌的熱門文章