从 .net 解密 SQL Server 加密数据
是否可以从 .net 中解密存储在 SQL Server 列中的 EncryptByCert 加密数据?
我想在存储中使用 EncryptByCert将 RSA 加密的值存储在列中的过程。然后客户端应用程序将连接到 SQL Server 并请求编码数据,然后需要使用证书的私钥进行解码。这可能吗?
我对加密没有很深的了解。这就是我问这个问题的原因。也许有一个很好的例子可以做到这一点?
Is it possible to decrypt the EncryptByCert-encrypted data that is stored in a SQL Server column from within .net?
I want to use EncryptByCert in a stored procedure to store a value RSA-encrpyted in a column. Then a client application will connect to SQL Server and request the encoded data and then needs to decode with the private key of the certificate. Is this possible?
I don't have a profound knowledge of encryption. That's why I ask this question. Maybe there is a good example for doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SQL Server 将数据加密为字节序列并将其作为结果返回。 没有使用容器格式。因此,可以直接通过
RSACryptoServiceProvider
进行解密。这里需要注意的是,SQL Server 使用 PKCS #1 V1.5 填充(至少是 SQL Server 2005)。需要注意的一件事:
SQL Server 按照
RSACryptoServiceProvider
所需的相反顺序返回加密结果。因此,在使用 RSACryptoServiceProvider.Decrypt 解密之前必须反转字节序列。SQL Server encrypts the data to a sequence of bytes and returns this as the result. There is no container format used. Therefore, It can directly be decrypted by the
RSACryptoServiceProvider
. Important to remark here is, that SQL Server uses PKCS #1 V1.5 padding (at least SQL Server 2005).One thing to notice:
SQL server returns the encrypted result in reverse order as it is desired from
RSACryptoServiceProvider
. Therefore the byte sequence has to be reversed before decrypting it withRSACryptoServiceProvider.Decrypt
.