2016-06-22 26 views
1

我一直有麻煩編碼RSA加密字節字符串,然後讓他們回到另一端(遠程主機)的字節。另一方面,它會拋棄壞數據。我試過谷歌,沒有運氣。加密RSA,編碼爲字符串。在另一端編碼回字節和解密RSA

到目前爲止我的代碼:

PC1:

array<Byte>^Test=Encoding::ASCII->GetBytes(Input); array<Byte>^TempByteText=RSA->Encrypt(Test,false); String^ Test2 = Encoding::ASCII->GetString(TempByteText); return Test2;

的我送Test2的到PC2。除此之外,我發送的任何文本或字節都按預期到達另一端,但是會爲RSA加密字節執行。

PC2:

array<Byte>^Test=Encoding::ASCII->GetBytes(Input); array<Byte>^TempByteText=RSA->Decrypt(Test,false);

即使我在本地返回的功能,它仍然同樣的錯誤的數據說。我有一個1024位的密鑰,所以加密的大小應該是128字節,就是這樣,但它仍然是壞數據。

任何幫助將被關聯。

+0

爲什麼你使用RSA而不是像AES這樣的對稱密碼,這個作業? RSA比AES慢大約1000倍,並且數據被限制在密鑰大小,RSA位不受AES的限制。另外一個1024位的密鑰真的很小,你應該使用2048位或者最好是4096位的密鑰。 RSA不比AES更安全。 – zaph

+0

這不是家庭作業哈哈。這是我的個人項目。是的,我也使用AES,但它適用於AES,但不適用於RSA。 – SubSpecs

回答

1

加密的數據不會是ASCII,大多數字節會落入不可打印的區域,如果需要字符串格式的加密數據,則需要將其轉換爲另一種編碼,如Base64或十六進制。

+0

我很懷疑,我只是測試過編碼比Base64快很多,我只是想確認這種類型的數據沒有可能的編碼方式。謝謝您的意見。 – SubSpecs