【发布时间】:2012-03-28 16:14:57
【问题描述】:
我只是需要一些建议。我需要保护一些列数据,所以我一直在搜索C# 4.0/Sql server 2008(不是 R2)中的加密。
这可能是我需要的:
“当数据必须受到系统管理员的保护时。实际上,在这个 场景最好不要使用 SQL Server 内部加密 并且更好地完全依靠中间层来执行 加密和解密。很难保护你的 如果您的密钥存储在 SQL 中,则来自确定的系统管理员的数据 服务器。” 来源:msdn
正确的做法是什么?
我已尝试将使用Rijndael 加密的数据保存到数据库中。
我收到错误:Length of the data to decrypt is invalid
我还没有用谷歌搜索过这个。
我应该继续为此苦苦挣扎,还是应该尝试使用 CLR 或其他什么来解决这个问题? 我只是找不到向我展示如何在业务层加密/解密的教程。
有什么建议吗?
谢谢
编辑:
好的,这就是我目前所拥有的。 如前所示,数据使用 Rinjdael 加密。 它存储在列中
TestCrypt (varbinary(255), null)
我在数据库中看起来像这样:
0xF6CA99F5B6BFA1D9A0BD2381177E049E02F381078966195B68A54A5BEC4C
用sp检索,如:
SELECT cast(s.TestCrypt AS varbinary) AS TestCrypt
在数据访问层:
while (reader.Read())
{
data.TestCrypt = (byte[])reader["TestCrypt"];
}
DecryptStringFromBytes 在这一行发现错误
plaintext = srDecrypt.ReadToEnd();
错误:要解密的数据长度无效。
【问题讨论】:
-
如果您发布您的加密/解密代码,那么也许我们可以帮助解决错误。这应该不是很困难。
标签: sql sql-server-2008 tsql c#-4.0