【发布时间】:2011-09-01 19:09:25
【问题描述】:
我正在尝试在我们的系统中实现一个要求,即在进入数据库之前修剪所有字符串。在我们的系统中有一个层,我可以在一个地方处理这个问题,但我担心如果我这样做可能会破坏加密的字符串。
我知道加密会产生一些非字母数字字符,但这些字符是否仅限于非空格?
【问题讨论】:
标签: .net encryption
我正在尝试在我们的系统中实现一个要求,即在进入数据库之前修剪所有字符串。在我们的系统中有一个层,我可以在一个地方处理这个问题,但我担心如果我这样做可能会破坏加密的字符串。
我知道加密会产生一些非字母数字字符,但这些字符是否仅限于非空格?
【问题讨论】:
标签: .net encryption
大多数加密算法(包括 Rijndael)都适用于二进制数据,而不是文本。二进制数据中没有空格(或非字母数字字符)的概念。
如果您必须将加密数据存储为文本,则需要先将其从二进制数据(例如字节数组)转换为文本。一种简单的方法是使用 Base64(例如 Convert.ToBase64String(data)) - 并且 Base64 从不包含使用标准代码的空格。
总结一下
Encoding.UTF8之类的东西,因为加密的数据是不是 UTF-8 编码的文本。【讨论】:
Rinjdael,更一般地说,每个加密算法都可能在其输出中产生空格。如果确实需要,您可能希望以防止空格的方式编码此二进制数据。但是,我建议您尽可能只存储数据。许多 RDBMS 提供二进制存储支持:例如,SQL Server 支持 varbinary 数据类型。
【讨论】: