View Full Version : [VSC++] SHA-256 e RSA
Ciao ragazzi,
devo calcolarmi, a partire da una sequenza di caratteri, il 'message digest' di 256 bits e poi criptare (firmare) questo messaggio con una chiave RSA.
In rete ho trovato Cripto++ e xyssl che potrebbero fare al caso mio, ma nessuna delle due implementa direttamente SHA-256 con l'RSA.
Qualcuno sa dove posso trovare l'implementazione già fatta e semplice senza l'uso di milioni di funzioni e librerie che non mi servono?
Se poi il risultato venisse specificato col un padding schemes for public-key systems PKCS#7 sarebbe il massimo!!!
Grazie.
tomminno
25-09-2008, 10:29
Ciao ragazzi,
devo calcolarmi, a partire da una sequenza di caratteri, il 'message digest' di 256 bits e poi criptare (firmare) questo messaggio con una chiave RSA.
In rete ho trovato Cripto++ e xyssl che potrebbero fare al caso mio, ma nessuna delle due implementa direttamente SHA-256 con l'RSA.
Qualcuno sa dove posso trovare l'implementazione già fatta e semplice senza l'uso di milioni di funzioni e librerie che non mi servono?
Se poi il risultato venisse specificato col un padding schemes for public-key systems PKCS#7 sarebbe il massimo!!!
Grazie.
Non ho capito se ti riferisci all'HMAC.
In tal caso Crypto++ lo supporta
CryptoPP::HMAC<SHA>
Non ho capito se ti riferisci all'HMAC.
In tal caso Crypto++ lo supporta
CryptoPP::HMAC<SHA>
Grazie ma non è proprio quello che cerco.
Ho generato le mie chiavi (pubblica e privata) e ora dovrei usare la chiave privata per firmare un messaggio usando l' algoritmo SHA-256:
Dovrebbe essere una cosa del tipo:
CryptoPP::RSASS<CryptoPP::PKCS1v15, CryptoPP::SHA256>::Verifier XXX
ma non riesco a passare la chiave.
tomminno
25-09-2008, 12:26
Grazie ma non è proprio quello che cerco.
Ho generato le mie chiavi (pubblica e privata) e ora dovrei usare la chiave privata per firmare un messaggio usando l' algoritmo SHA-256:
Dovrebbe essere una cosa del tipo:
CryptoPP::RSASS<CryptoPP::PKCS1v15, CryptoPP::SHA256>::Verifier XXX
ma non riesco a passare la chiave.
Se vuoi cifrare c'è signer.
CryptoPP::AutoSeededRandomPool rng;
CryptoPP::InvertibleRSAFunction keys;
keys.GenerateRandomWithKeySize(rng, 256);
CryptoPP::RSASS<CryptoPP::PKCS1v15, CryptoPP::SHA256>::Signer signer(keys);
Se vuoi verificare usi Verifer passandogli un Signer creato con gli stessi parametri per la cifratura, un file contenente la chiave pubblica o la chiave pubblica che è composta da 2 numeri, nel tuo caso serve quest'ultimo:
CryptoPP::RSASS<CryptoPP::PKCS1v15, CryptoPP::SHA256>::Verifier verifier(n, e);
comunque altri dettagli li puoi trovare qui (http://www.cryptopp.com/wiki/RSA#RSA_Signature)
Hai dato un'occhiata a LibTomCrypt (http://libtom.org/)??
Grazie ma non è proprio quello che cerco.
Ho generato le mie chiavi (pubblica e privata) e ora dovrei usare la chiave privata per firmare un messaggio usando l' algoritmo SHA-256:
Dovrebbe essere una cosa del tipo:
CryptoPP::RSASS<CryptoPP::PKCS1v15, CryptoPP::SHA256>::Verifier XXX
ma non riesco a passare la chiave.
Ok, risolto. Grazie
CryptoPP::RSASSA_PKCS1v15_SHA_Signer priv(privFile);
// SHA-256 Alogorithm
CryptoPP::RSASS<CryptoPP::PKCS1v15, CryptoPP::SHA256>::Verifier pub(pubFile);
In ogni caso credo usero' l'xyssl visto che l'ho già modificata ad hoc per 'Generating the RSA/SHA-256 signature'.
L'unica cosa è che non riesco a comparare le due firme in quando vengono generate con uno standard diverso.
Spero l'implementazione che ho realizzato vada bene perchè non ho proprio il tempo materiale di mettere le due firme nella stessa versione e compararle con le 2 librerie.
Stamattina per curiosità ho provato a comparare le due firme generatare con xyssl e Crypto++, ma non corrispondono.:(
Qualcuno sa dove posso trovare un'ulteriore implementazione in C/C++ del RSA/SHA-256?
Grazie
CryptoPP::RSASS<CryptoPP::PKCS1v15, CryptoPP::SHA256>::Verifier verifier(n, e);
comunque altri dettagli li puoi trovare qui (http://www.cryptopp.com/wiki/RSA#RSA_Signature)
C'è un modo per visualizzare il message digest generato dall'SHA256?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.