我在C代码中做了两个SHA1,一个是字符串,另一个是整数,得到不同的结果.
SHA_init(&ctx);
SHA_update(&ctx, "1234", 4);
sha = SHA_final(&ctx);
unsigned n = 1234;
SHA_init(&ctx);
SHA_update(&ctx, &n, sizeof(n));
sha = SHA_final(&ctx);
string result: 7110eda4d09e62aa5e4a390b0a572acd2c220
integer result: c7f07b846cc46631c2079cdd7179afdd783d643
Run Code Online (Sandbox Code Playgroud)
在python中,很容易得到字符串SHA1
sha1 = hashlib.sha1()
sha1.update('1234')
sha1.hexdigest()
'7110eda4d09e062aa5e4a390b0a572ac0d2c0220'
Run Code Online (Sandbox Code Playgroud)
我们可以看到字符串结果与C代码相同.但是如何在python中获取整数SHA1?因为python sha1不支持整数.
我尝试了以下代码,但它无法获得与C代码相同的结果.
aint = unpack('>4B', pack('>I', 1234))
sha1 = hashlib.sha1()
sha1.update(bytearray(aint))
sha1.hexdigest()
Run Code Online (Sandbox Code Playgroud)
'ac9928e78cf6ea117451ecd6654fea2adae73e21'
如何在python中执行整数SHA1?