相同字符串的 SHA-1 不同是 Java 和 C++
要散列的字符串 - 38902566
Java 中的 SHA-1 - 6ffc3d4038943971cd91db0cf0f3de8ecf1b2853(已确认在线 sha1 工具产生相同的结果)
C++ 中的 SHA-1 - 093288D2933CE7D55295450EBFE711F3E1AE3BF2
Java实现:
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] messageDigest = md.digest(customerId.getBytes());
BigInteger no = new BigInteger(1, messageDigest);
String hashtext = no.toString(16);
while (hashtext.length() < 32) {
hashtext = "0" + hashtext;
}
return hashtext;
C++ 实现
int hash_SHA1(const char* cid, int len, char* digest)
{
/* Creating Id Digest. */
int rc = 0, i;
unsigned char idDgst[21] = { '\0' };
char buffer[3] = { '\0' };
rc = SHA1(cid, len, idDgst) == NULL ? -1 : 0;
for(i = 0; !rc && (i < sizeof(idDgst)-1); i++)
{
sprintf(buffer, "%02X", idDgst[i]);
strncat(digest, buffer, 3);
}
return rc == 0;
}
与我共享 C++ 代码以在 Java 中实现。我在这里做错了什么?