Ho eseguito due SHA1 in codice C, uno per una stringa e un altro per un intero e ottenere risultati diversi.Python SHA1 Numero intero
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
in python, è molto facile ottenere lo SHA1 stringa
sha1 = hashlib.sha1()
sha1.update('1234')
sha1.hexdigest()
'7110eda4d09e062aa5e4a390b0a572ac0d2c0220'
Possiamo vedere il risultato della stringa è lo stesso codice C. Ma come ottenere l'intero SHA1 in python? perché il python sha1 non supporta l'intero.
Ho provato il seguente codice, ma non è possibile ottenere lo stesso risultato del codice C.
aint = unpack('>4B', pack('>I', 1234))
sha1 = hashlib.sha1()
sha1.update(bytearray(aint))
sha1.hexdigest()
'ac9928e78cf6ea117451ecd6654fea2adae73e21'
come fare la SHA1 intero in Python?
Suggerimento: 'map (ord," 1234 ") == [49, 50, 51, 52]! = [210, 4] == [1234 & 0xff, 1234 >> 8]' – kay
Che ne dici di 'sha1.aggiornamento (str (1234)) '? – ycsun
Ovviamente, 'sha1.update (str (1234))' è uguale a 'sha1.update ('1234')' –