這篇文章向您展示了如何在c#.net Windows窗體應用程序中使用RSA算法對字符串進行加密和解密。
RSA是由Ron Rivest,Adi Shamir和Leonard Adleman開發的非對稱編碼系統(其名稱也是這三位作者的縮寫)。它被廣泛用於加密和電子簽名技術。它通過使用公共密鑰與所有人共享來工作。
RSA操作基於四個主要步驟:密鑰生成,密鑰共享,加密和解密。
本文將介紹有關c#rsa生成公共和私有密鑰的算法,密鑰如何在c#中進行加密和解密。
拖動 文本框,標簽和按鈕從Visual Studio工具箱到您的WinForm設計,那么你可以設計一個簡單的用戶界面,使您可以加密和使用C#代碼RSA算法解密字符串,如下圖所示。
在C#中使用RSA算法進行加密和解密
通過本c#密碼學教程,我將創建一個Encrypt方法來使用RSA算法加密您的數據。
byte[] Encrypt(byte[] data, RSAParameters RSAKey, bool fOAEP) { byte[] encryptedData; using (RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider()) { rSACryptoServiceProvider.ImportParameters(RSAKey); encryptedData = rSACryptoServiceProvider.Encrypt(data, fOAEP); } return encryptedData; }
同樣,創建 Decrypt方法以使用RSA算法解密數據。
byte[] Decrypt(byte[] data, RSAParameters RSAKey, bool fOAEP) { byte[] decryptedData; using (RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider()) { rSACryptoServiceProvider.ImportParameters(RSAKey); decryptedData = rSACryptoServiceProvider.Decrypt(data, fOAEP); } return decryptedData; }
C#RSA用公鑰加密
接下來,聲明 unicodeEncoding, rSACryptoServiceProvider, data 和 cryptoData變量,如下所示。
UnicodeEncoding unicodeEncoding = new UnicodeEncoding(); RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider(); byte[] data; byte[] encryptData;
最后,使用RSA通過調用ExportParameters方法來生成公鑰和私鑰 。
rSACryptoServiceProvider.ExportParameters(false)
RSA算法使用密鑰在c#中執行加密和解密。
將單擊事件處理程序添加到“ 加密”按鈕后,即可使用RSA算法對數據進行加密。
private void btnEncrypt_Click(object sender, EventArgs e) { data = unicodeEncoding.GetBytes(txtInput.Text); encryptData = Encrypt(data, rSACryptoServiceProvider.ExportParameters(false), false); txtEncrypt.Text = unicodeEncoding.GetString(encryptData); }
將單擊事件處理程序添加到“ 解密” 按鈕,使您可以解密數據。
private void btnDecrypt_Click(object sender, EventArgs e) { byte[] data = Decrypt(encryptData, rSACryptoServiceProvider.ExportParameters(true), false); txtDecrypt.Text = unicodeEncoding.GetString(data); }