回答
代碼示例:
private static string _privateKey;
private static string _publicKey;
private static UnicodeEncoding _encoder = new UnicodeEncoding();
private static void RSA()
{
var rsa = new RSACryptoServiceProvider();
_privateKey = rsa.ToXmlString(true);
_publicKey = rsa.ToXmlString(false);
var text = "Test1";
Console.WriteLine("RSA // Text to encrypt: " + text);
var enc = Encrypt(text);
Console.WriteLine("RSA // Encrypted Text: " + enc);
var dec = Decrypt(enc);
Console.WriteLine("RSA // Decrypted Text: " + dec);
}
public static string Decrypt(string data)
{
var rsa = new RSACryptoServiceProvider();
var dataArray = data.Split(new char[] { ',' });
byte[] dataByte = new byte[dataArray.Length];
for (int i = 0; i < dataArray.Length; i++)
{
dataByte[i] = Convert.ToByte(dataArray[i]);
}
rsa.FromXmlString(_privateKey);
var decryptedByte = rsa.Decrypt(dataByte, false);
return _encoder.GetString(decryptedByte);
}
public static string Encrypt(string data)
{
var rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(_publicKey);
var dataToEncrypt = _encoder.GetBytes(data);
var encryptedByteArray = rsa.Encrypt(dataToEncrypt, false).ToArray();
var length = encryptedByteArray.Count();
var item = 0;
var sb = new StringBuilder();
foreach (var x in encryptedByteArray)
{
item++;
sb.Append(x);
if (item < length)
sb.Append(",");
}
return sb.ToString();
}
的的RSACryptoServiceProvider無意到加密的隨機數據塊(數據大小僅限於密鑰大小)。另外一般情況下,您應該使用OAEP填充,而不是明確地切換PCKS1v1.5以幫助防止選擇的密文攻擊。沒有人應該使用這個示例代碼。 – jbtule
@ jbtule:那麼告訴我們什麼是最好的加密解密與私人和公共密鑰概念的大數據? – Mou
@Mou從我收集的內容中,生成一個對稱密鑰,然後使用接收方的公鑰將其加密。接收者用自己的私鑰解密,然後用共享對稱密鑰加密大數據。您可以每n次傳輸更新對稱密鑰。我認爲這就是SSL的工作原理(我敢肯定這是一個非常簡單的描述) – MikeJansen
- 1. 使用RSA公鑰和私鑰在C#中加密數據
- 2. 使用RSA公鑰加密DSA私鑰
- 3. 私鑰加密公鑰加密
- 4. 公鑰和私鑰API密鑰
- 5. iphone - 如何用公鑰加密NSData並用私鑰解密?
- 6. 用RSA公鑰和私鑰加密和解密一個SecretKey
- 7. 如何使用公鑰/私鑰對來加密SSO令牌?
- 8. WSO2使用公鑰私鑰加密/解密密碼(字符串)
- 9. 如何在Python中使用私鑰生成公共密鑰
- 10. 私鑰分配技術?
- 11. 如何從密鑰庫中讀取私鑰和公鑰密鑰庫
- 12. 帶私鑰/公鑰的EPub加密
- 13. 如何在SJCL中實現公鑰/私鑰加密?
- 14. 使用私鑰和公鑰加密文件
- 15. 使用Bouncy Castle加密和存儲私鑰+公鑰
- 16. C#爲DSA加密算法生成公鑰和私鑰
- 17. 連接到MQ使用安全密鑰(公鑰和私鑰)
- 18. 加密使用公開私鑰
- 19. Java - 公鑰 - 私鑰加密 - 如何計算RSA中的私鑰 - UNSOLVED
- 20. SSL密鑰交換加密技術
- 21. 如何使用私鑰加密字符串並使用公鑰解密?
- 22. PyCrypto:解密只用文件中的公鑰(無私鑰+公鑰)
- 23. 在PKCS#1中交換公鑰/私鑰OAEP加密/解密
- 24. 使用公鑰/私鑰技術限制Web應用程序的訪問
- 25. OpenSSL AES_cfb128_encrypt公鑰/私鑰C++
- 26. 用私鑰加密的數據只能用公鑰解密。
- 27. 私鑰/公鑰
- 28. 公鑰/私鑰中的RSA密鑰值和模數
- 29. 如何使用短數據公鑰/私鑰不對稱密碼
- 30. 如何查找.ssh私鑰和公鑰
[?你嘗試過什麼(http://mattgemmell.com/2008/12/08/what-have-you-tried/) – ntoskrnl