第一創建我歌唱鍵: (殼/ Debian的9)我錯了什麼?牡丹&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
然後我ceate我與 (殼牌)encrypt.txt
> echo "ęśłżół">encrypt.txt
和隱窩它與我的RSA公鑰 (殼牌)
> openssl rsautl -encrypt -inkey ./pub.pem -pubin -in ./encrypt.txt -out
> ./encrypt.dat
..而不是來自牡丹(昨日dowloaded)與QT(5.9.1):
...
使用命名空間牡丹;
using 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();
...我出文件中包含(並且是255字節寬):
^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��^@ęśłżół
我的問題:1。 ......我看到我的字符串: ęśłżół....但我錯了什麼? - decodedfile不是原始的嗎?
- I'is允許我的使用RAW類型只喜歡(此文件:encrpted.dat):
PK_Decryptor_EME dec(*kp,*rng.get(), "Raw");
如果選用:PKCS1v15」 || 「EME-PKCS1-v1_5」 「OAEP」|| 「EME-OAEP」|| 「EME1」|| 「EME1(SHA-1)」|| 「EME1(SHA-256)」
我成爲錯誤:
terminate called after throwing an instance of 'Botan::Decoding_Error' what(): Invalid argument Decoding error: Invalid public key ciphertext, cannot decrypt
應該是「PKCS1v15」。密文的大小是多少? –
@MaartenBodewes謝謝你,它的作品! PS。我可以用這個庫使用PGP密鑰嗎?我不知道如何將openpgp密鑰(public/priv)更改爲RSA密鑰...我發現了gpgsm工具,但是comand --export-secret-key-p12不再工作... – blackmoon
的確,只有在密鑰轉換 - PGP使用自己的密鑰容器格式。應該有多個能夠導出PKCS#8密鑰或PKCS#12密鑰存儲的工具。不同目的的混音鍵雖然不鼓勵,但一般而言,您應該創建一個新的密鑰對。 –