premier décryptage je crée mes clés de chant: (Shell/Debian 9)Qu'est-ce que je me trompe? Botan & QT & SHELL
>openssl genrsa -out ./priv.rsa 2048
>openssl pkcs8 -topk8 -inform PEM -outform PEM -in ./priv.rsa -out priv.pem
>openssl rsa -in ./priv.pem -pubout -out pub.pem
Alors je ceate mon encrypt.txt avec (Shell)
> echo "ęśłżół">encrypt.txt
et crypte avec ma clé publique Rsa (Shell)
> openssl rsautl -encrypt -inkey ./pub.pem -pubin -in ./encrypt.txt -out
> ./encrypt.dat
.. et que vient Botan (dowloaded hier) avec QT (5.9.1):
...
en utilisant l'espace de noms Botan;
en utilisant std :: string;
QFile file,file2;
// Reading private key
file.setFileName(".../priv.pem");
file.open(QIODevice::ReadOnly);
QByteArray f = file.readAll();
file.close();
//reading encrypted file
file2.setFileName("...../encrypt.dat");
file2.open(QIODevice::ReadOnly);
QByteArray f2 = file2.readAll();
file2.close();
enter code here
std::vector<uint8_t> ct;
for(QByteArray::Iterator it = f2.begin();it!=f2.end();it++)
{
ct.push_back((uint8_t)(*it));
}
string password=ui->lineEdit_2->text().toStdString().c_str();
std::unique_ptr<Botan::RandomNumberGenerator> rng(new Botan::AutoSeeded_RNG);
DataSource_Memory keyData2(f.toStdString().c_str());
std::unique_ptr<Private_Key> kp = PKCS8::load_key(keyData2,pass);
PK_Decryptor_EME dec(*kp,*rng.get(), "Raw");
secure_vector<uint8_t> ct4=dec.decrypt(ct);
QByteArray aaa;
for(secure_vector<uint8_t>::iterator it=ct4.begin();it!=ct4.end();it++)
{
aaa+=(uint8_t)(*it);
}
QFile fileX(".../encryptE.txt");
fileX.open(QIODevice::WriteOnly);
fileX.write(aaa);
fileX.close();
... et mon dossier Out contient (et 255 octets de large):
^B4�����x��^V�&��ߵݹ�*S�^T�㓠K��7�J CF^U^B^[��^Q�� =^H�+�7Y^^^U�^^O\�v�����bdK^N^Ev^QI=����)�)��n^KПV����Y�-23^^�5]���^\�լ1^U�9n�z萘Å^A��Vr��8�@^C�^S����o��0����S[x� ��2 �^P4�^L�p��i���t^D��� ��^Z��J^K�^G^Z^\�4\^D^Z^Ew^Tx�S�ٛ��i�5�^D��A��Ƨ�o�zÚ��#���^L�^G���Ŋ^FXIu��^@ęśłżół
Mes questions: 1. ... je vois ma chaîne: ęśłżół .... mais qu'est-ce que je me trompe? - le fichier décodé n'est pas original?
- I'is autorisés à utiliser mon genre RAW que comme (pour ce fichier: encrpted.dat):
PK_Decryptor_EME dec(*kp,*rng.get(), "Raw");
si je choisis: PKCS1v15” || "EME-PKCS1-v1_5" "OAEP" || "EME-OAEP" || "EME1" || "EME1 (SHA-1)" || « Eme1 (SHA-256) »
i devienne erreur:
terminate called after throwing an instance of 'Botan::Decoding_Error' what(): Invalid argument Decoding error: Invalid public key ciphertext, cannot decrypt
Doit être '" "PKCS1v15" '. Quelle est la taille du texte chiffré? –
@MaartenBodewes Merci, ça marche !!!! ps. puis-je utiliser les clés PGP avec cette bibliothèque? je ne sais pas comment changer la clé openpgp (publique/priv) en clés RSA ... j'ai trouvé l'outil gpgsm, mais comand --export-secret-key-p12 ne fonctionne plus ... – blackmoon
En effet, seulement après conversion de clé - PGP utilise son propre format de conteneur de clé. Il devrait y avoir plusieurs outils capables d'exporter les clés PKCS # 8 ou PKCS # 12. Il est toutefois déconseillé de mélanger des clés à des fins différentes. En général, vous devriez plutôt créer une nouvelle paire de clés. –