Datagridview,显示可编辑的解密字符串。

时间:2011-12-14 20:24:01

标签: c# .net encryption datagridview cryptography

我可以使用CellFormatting事件在datagridview中显示解密的加密值。但是如何使这个可编辑,这样输入一个新的字符串会将它加密到绑定属性,并仍然显示为书面(解密)..?一旦我完成编辑单元格并离开,它就会在Decrypt方法中出现异常。

  

FormatException:Base-64 char数组的长度无效。

    public static string DecryptData(string stringToDecrypt)
    {
        byte[] decryptedData = ProtectedData.Unprotect(Convert.FromBase64String(stringToDecrypt), Encoding.Unicode.GetBytes(EntropyValue), DataProtectionScope.LocalMachine);
        return Encoding.Unicode.GetString(decryptedData);
    }

2 个答案:

答案 0 :(得分:0)

您获得的例外很可能来自于该部分:

Convert.FromBase64String(stringToDecrypt) 

stringToDecrypt must的长度是4的倍数。检查是否属实。

答案 1 :(得分:0)

如果您在加载网格时总是在解密该字段,那么您只需加密它以将更改保存到数据库中?

挂钩cellValidating或类似事件以查看是否有更改以及是否存在加密 - >保存到数据库 - >然后从数据库刷新/重新加载网格。

当你重新加载时,你将带来新的base64编码版本的字段,然后很好地解密,避免错误