/// <summary> /// Rsa解密 /// </summary> /// <param name="data">待解密的字节码</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <param name="isPublicKey">是否公钥</param> /// <param name="base64Key">BASE64编码的公钥</param> /// <returns>返回Rsa解密后的字节码</returns> public static byte[] RsaDecrypt(this byte[] data, bool isPublicKey, string base64Key, CipherMode cipherMode, CipherPadding cipherPadding) { ICipherParameters cipherParameters; if (isPublicKey) { cipherParameters = RSAUtilities.GetKeyParameterFormPrivateKey(base64Key); } else { cipherParameters = RSAUtilities.GetKeyParameterFormPublicKey(base64Key); } return(SecurityExtension.Encrypt(data, CipherAlgorithm.RSA, cipherMode, cipherPadding, cipherParameters)); }
/// <summary> /// 使用公钥Rsa解密 /// <para> /// 如果PKCS#8格式的公钥则使用 <see cref="RsaEncryptByPublicKey"/> /// </para> /// <para> /// 如果PKCS#1格式的公钥则使用 <see cref="RsaEncryptByAsn1PublicKey"/> /// </para> /// </summary> /// <param name="data">待解密的字节码</param> /// <param name="publicKey">PKCS#1的BASE64编码的公钥(BASE64编码)</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <returns>返回Rsa加密后的字节码</returns> public static byte[] RsaEncryptByAsn1PublicKey(this byte[] data, string publicKey, CipherMode cipherMode, CipherPadding cipherPadding) { var cipherParameters = RSAUtilities.GetPublicKeyParameterFormAsn1PublicKey(publicKey); return(SecurityExtension.Encrypt(data, CipherAlgorithm.RSA, cipherMode, cipherPadding, cipherParameters)); }