【发布时间】:2021-07-17 17:17:06
【问题描述】:
我正在尝试获取 UTF-16le 字符串的 SHA256 和。在 Python 上,我正在尝试做的事情看起来像这样:
import hashlib
username = "Administrator"
username = username.decode('utf-8').encode('utf-16le')
hash = hashlib.sha256(username).digest()
print(hash)
下面的 C 代码为我提供了 SHA256 哈希,就好像我没有在上面的 Python 部分中调用 decode('utf-8').encode('utf-16le')。
下面的输出是e7d3e769f3f593dadcb8634cc5b09fc90dd3a61c4a06a79cb0923662fe6fae6b。我想要的输出是5264c63204c56c0df9f8f4a030ea19d93a0fa402be6b00b4d7464e61641021f7
这是我第一次用 C 编码,所以如果我遗漏了一些明显的东西或做错了什么,这就是原因。
#include <openssl/sha.h>
#include <stdio.h>
#include <string.h>
int main()
{
unsigned const char ibuf[] = "Administrator";
unsigned char obuf[32];
SHA256(ibuf, strlen((const char * )ibuf), obuf);
unsigned char hash[32];
int i;
for(i = 0; i < 32; i++)
{
printf("%02x",obuf[i]);
}
printf("\n");
return 0;
}
【问题讨论】: