Tôi đã làm hai SHA1 trong mã C, một là cho một chuỗi, và một là cho một số nguyên, và có được kết quả khác nhau.Python SHA1 Integer
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
Trong python, nó rất dễ dàng để có được những chuỗi SHA1
sha1 = hashlib.sha1()
sha1.update('1234')
sha1.hexdigest()
'7110eda4d09e062aa5e4a390b0a572ac0d2c0220'
Chúng ta có thể xem kết quả chuỗi là giống như mã C. Nhưng làm thế nào để có được số nguyên SHA1 trong python? vì python sha1 không hỗ trợ số nguyên.
Tôi đã thử mã sau nhưng không thể nhận được kết quả tương tự như mã C.
aint = unpack('>4B', pack('>I', 1234))
sha1 = hashlib.sha1()
sha1.update(bytearray(aint))
sha1.hexdigest()
'ac9928e78cf6ea117451ecd6654fea2adae73e21'
Làm thế nào để làm SHA1 số nguyên trong python?
Gợi ý: 'bản đồ (ord," 1234 ") == [49, 50, 51, 52]! = [210, 4] == [1234 & 0xff, 1234 >> 8]' – kay
Làm thế nào về 'sha1.cập nhật (str (1234)) '? – ycsun
Tất nhiên, 'sha1.update (str (1234))' giống như 'sha1.update ('1234')' –