Comment puis-je crypter mes données de chaîne avec un remplissage SHA-256 au lieu du remplissage SHA-1 par défaut dans Crypto ++? Je n'ai trouvé aucun moyen de changer l'algorithme de remplissage utilisé par mes fonctions de chiffrement / déchiffrement. J'ai entendu parler de certaines bibliothèques ayant des schémas de remplissage codés en dur, mais j'espère qu'il existe un moyen de modifier celui utilisé par Crypto ++.
Voici ma méthode de cryptage:
string GUIMain::encryptData(const string data) {
CryptoPP::RSAES_OAEP_SHA_Encryptor e(*serverPublic);
string cipher;
CryptoPP::StringSource ss1(data, true, new CryptoPP::PK_EncryptorFilter(*rng, e, new CryptoPP::StringSink(cipher)));
return cipher;
}
Voici ma méthode de décryptage:
string GUIMain::decryptData(const string cipher) {
CryptoPP::RSAES_OAEP_SHA_Decryptor d(*privateKey);
string recovered;
CryptoPP::StringSource ss2(cipher, true, new CryptoPP::PK_DecryptorFilter(*rng, d, new CryptoPP::StringSink(recovered)));
return recovered;
}
Les clés ( *serverPublic
et *privateKey
) sont des types d'objets RSA::PublicKey
et RSA::PrivateKey
respectivement. *rng
est un AutoSeededRandomPool
objet.
Puis-je ajouter / modifier ces méthodes pour qu'elles fonctionnent correctement? Je suis nouveau en C ++, veuillez donc expliquer les solutions si possible.
Comment puis-je crypter mes données de chaîne avec un remplissage SHA-256 au lieu du remplissage SHA-1 par défaut dans Crypto ++?
RSAES_OAEP_SHA_Encryptor
et RSAES_OAEP_SHA_Decryptor
sont des typedefs:
$ grep RSAES_OAEP_SHA_Encryptor *.h
rsa.h:DOCUMENTED_TYPEDEF(RSAES<OAEP<SHA1> >::Encryptor, RSAES_OAEP_SHA_Encryptor);
$ grep RSAES_OAEP_SHA_Decryptor *.h
rsa.h:DOCUMENTED_TYPEDEF(RSAES<OAEP<SHA1> >::Decryptor, RSAES_OAEP_SHA_Decryptor);
Vous pouvez utiliser les éléments suivants à la place:
RSAES<OAEP<SHA256> >
Ainsi, votre crypteur et votre décrypteur seraient:
RSAES<OAEP<SHA256> >::Encryptor
RSAES<OAEP<SHA256> >::Decryptor
Gardez l'espace supplémentaire après le >
pour le modèle. Il est nécessaire sur les anciennes versions du langage C ++. Sinon, le compilateur voit >>
et pense qu'il fait partie d'un opérateur d'extraction.
Il existe plusieurs typedefs comme ceux que vous utilisez:
$ grep RSAES *.h
...
rsa.h:struct RSAES : public TF_ES<RSA, STANDARD>
rsa.h:/// \brief \ref RSAES<STANDARD> "RSAES<PKCS1v15>::Decryptor" typedef
rsa.h:DOCUMENTED_TYPEDEF(RSAES<PKCS1v15>::Decryptor, RSAES_PKCS1v15_Decryptor);
rsa.h:/// \brief \ref RSAES<STANDARD> "RSAES<PKCS1v15>::Encryptor" typedef
rsa.h:DOCUMENTED_TYPEDEF(RSAES<PKCS1v15>::Encryptor, RSAES_PKCS1v15_Encryptor);
rsa.h:/// \brief \ref RSAES<STANDARD> "RSAES<OAEP<SHA1>>::Decryptor" typedef
rsa.h:DOCUMENTED_TYPEDEF(RSAES<OAEP<SHA1> >::Decryptor, RSAES_OAEP_SHA_Decryptor);
rsa.h:/// \brief \ref RSAES<STANDARD> "RSAES<OAEP<SHA1>>::Encryptor" typedef
rsa.h:DOCUMENTED_TYPEDEF(RSAES<OAEP<SHA1> >::Encryptor, RSAES_OAEP_SHA_Encryptor);
DOCUMENTED_TYPEDEF
est une macro dans config_ns.h
. La macro permet de générer une meilleure documentation lorsqu'elle make docs
est exécutée.
Une compilation régulière utilise ce qui suit.
typedef RSAES<OAEP<SHA1> >::Encryptor RSAES_OAEP_SHA_Encryptor;
Une génération de documentation utilise les éléments suivants. L'héritage fonctionne mieux lors de la création de la documentation.
struct RSAES_OAEP_SHA_Encryptor : RSAES<OAEP<SHA1> >::Encryptor
{
};
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots