MD5、SHA1 為單向雜湊,無法解密。RSA 非對稱加密可加密/解密,適合需機密性的資料傳輸。.NET 提供 RSA (基類) 與 RSACryptoServiceProvider (CSP 實作) 兩個核心類別,以及 RSAParameters 結構保存參數。
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); RSAParameters publicKey = rsa.ExportParameters(false); // 僅含 Exponent、Modulus RSAParameters privateKey = rsa.ExportParameters(true); // 含 8 個欄位
// 加密 (使用公鑰)
public byte[] RSAEncrypt(byte[] data, RSAParameters publicKey) {
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(publicKey);
return rsa.Encrypt(data, false);
}
// 解密 (使用私鑰)
public byte[] RSADecrypt(byte[] data, RSAParameters privateKey) {
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(privateKey);
return rsa.Decrypt(data, false);
}