像php sha1一样启用Java sha1原始模式

时间:2017-09-29 13:54:15

标签: java php binary sha

我遇到php.sha1和我的java代码的问题。 我的PHP代码

echo base64_encode(sha1("test", TRUE));
qUqP5cyxm6YcTAhz05Hph5gvu9M=

我的java代码是:

 static String Hash(String input) throws Exception {

    MessageDigest mDigest = MessageDigest.getInstance("SHA1");
    byte[] result = mDigest.digest(input.getBytes());
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < result.length; i++) {
       sb.append((result[i / Byte.SIZE] << i % Byte.SIZE & 0x80) == 0 ? '0' : '1');
    }
    return base64_encode(sb.toString());

}

输出MTAxMDEwMDEwMTAwMTAxMDEwMDA=

我应该如何更改循环以获得相等的字符串?

1 个答案:

答案 0 :(得分:2)

这个应该像RAW SHA-1

一样
String base64 = 
Base64.getEncoder().encodeToString(MessageDigest.
getInstance("SHA-1").digest(s.getBytes("ISO-8859-1")));