0
我想使用SQL Server中存储和生成的非对称密钥在客户端上执行一些加密。使用来自SQL Server的公钥的.Net中的RSA加密?
我可以使用下面的查询得到的DMV公钥:
SELECT public_key FROM sys.asymmetric_keys WHERE name = 'KeyName'
这将返回以下值:
0x06020000002400005253413100020000010001008B656455D4C56392C45EEC3563203635F5F42DDA57069E7A880BF0AF055174A2A165DED75BA4E73E2A09BCBFAA50042B4E27354C1FEB3361F81C381AFF59A6A7
我如何使用这个二进制VAL ue作为.Net中RSA_512
加密的公钥?我在这里搜索了similar questions,但未能找到任何合适的解决方案:我需要XML格式的密钥或至少知道公钥的.Modulus
和.Exponent
。我可以从这些二进制序列中获得它吗?
编辑:
这里是我的代码
SqlCommand cmd = new SqlCommand(string.Format("SELECT dbo.GetKey(@KeyName)", conn);
cmd.Parameters.AddWithValue("@KeyName", ConfigurationManager.AppSettings.Get("PublicKeyName"));
PublicKey = (byte[]) cmd.ExecuteScalar();
var rsa=new System.Security.Cryptography.RSACryptoServiceProvider(Convert.ToInt32(ConfigurationManager.AppSettings.Get("KeyLength")));
rsa.ImportCspBlob(PublicKey);
EncryptedData = rsa.Encrypt(Data,false);
我得到的异常 “键无效” 中的最后一行。
这是行不通的。 'ImportCspBlob()'不给出警告,但只要我尝试使用'rsa'对象的'Encrypt()'方法,就会得到“无效密钥”异常。有趣的是,总的keyt大小只有84字节长 - 是否正确? – 2011-12-29 18:31:10
适用于您的问题中的价值...这是真正的价值吗? – 2011-12-29 19:07:55
84字节是672位,看起来不错 – 2011-12-29 19:08:26