SQL证书:C#加密和SQL解密

SQL证书:C#加密和SQL解密,c#,sql,encryption,certificate,x509certificate,C#,Sql,Encryption,Certificate,X509certificate,我正在用SQL创建证书并将其备份到我的计算机 然后,我安装证书,并使用它通过我创建(或从文章中窃取)的C#程序对某些值进行加密 如果我复制粘贴加密值并尝试在SQL中解密它,那么我会得到NULL,这意味着它无法解密 我认为我的问题是C#没有将字节转换为SQL的可识别字符是否有方法输出字节,以便将粘贴复制到SQL并正确解密值? SQL-创建证书 CREATE CERTIFICATE [MyCert] ENCRYPTION BY PASSWORD = 'P@ssw0rd' WITH S

我正在用SQL创建证书并将其备份到我的计算机

然后,我安装证书,并使用它通过我创建(或从文章中窃取)的C#程序对某些值进行加密

如果我复制粘贴加密值并尝试在SQL中解密它,那么我会得到
NULL
,这意味着它无法解密

我认为我的问题是C#没有将字节转换为SQL的可识别字符是否有方法输出字节,以便将粘贴复制到SQL并正确解密值?

SQL-创建证书

CREATE CERTIFICATE [MyCert]
    ENCRYPTION BY PASSWORD = 'P@ssw0rd'
    WITH SUBJECT = 'My Sql Certificate'

BACKUP CERTIFICATE [MyCert] TO FILE = 'C:\MyCert.cer'
/* Find certificate and install */
C#-加密

X509Certificate2 cert = null;
if (this.TryGetCertificate(out cert))
{
    RSACryptoServiceProvider rsaEncryptor = (RSACryptoServiceProvider)cert.PublicKey.Key;
    byte[] cipherData = rsaEncryptor.Encrypt(Encoding.UTF8.GetBytes(PlainRichTextBox.Text), true);
    CipherRichTextBox.Text = "0x" + BitConverter.ToString(cipherData).Replace("-", "");
}
SQL解密

DECLARE @encrypted varbinary(max) = 0xvalueFromEncryptionApp
DECLARE @decrypted varbinary(max) = DECRYPTBYCERT(cert_id('MyCert'), @encrypted, N'P@ssw0rd')
SELECT CONVERT(varchar(max), @decrypted)
结果

NULL