.net使用可打印字符结果进行快速安全加密的方法

.net使用可打印字符结果进行快速安全加密的方法,.net,encryption,.net,Encryption,我有一个每天接收大约1500万条记录的系统(在单独的文件中,每个文件有大约150K条记录)。系统将这些文件从二进制转换为ascii,然后将数据输入多个下游系统。 现在有一个新的要求,我们必须加密每个记录中的一个字段(我们称之为字段a),字段a的长度总是在6到10位之间 1.加密方式应确保加密结果 包含可打印字符 2.这里的表演非常重要 3.我们在每个记录中都有其他字段,可以用作加密/解密密钥,如日期-时间,但不能保证这些其他字段是唯一的(这应该不重要) 4.其他下游系统应该能够使用密钥解码结果(

我有一个每天接收大约1500万条记录的系统(在单独的文件中,每个文件有大约150K条记录)。系统将这些文件从二进制转换为ascii,然后将数据输入多个下游系统。 现在有一个新的要求,我们必须加密每个记录中的一个字段(我们称之为字段a),字段a的长度总是在6到10位之间

1.加密方式应确保加密结果 包含可打印字符

2.这里的表演非常重要

3.我们在每个记录中都有其他字段,可以用作加密/解密密钥,如日期-时间,但不能保证这些其他字段是唯一的(这应该不重要)

4.其他下游系统应该能够使用密钥解码结果(我对数据加密非常陌生,但我认为该密钥称为私钥)

5.我读过关于盐渍的不同文章,你认为盐渍在我们的场景中有什么用处吗


你认为我在这里使用的最好的加密算法是什么?.net framework是否提供了此算法的实现?

这里有两个不同的问题:

  • 根据您的安全要求选择适当的加密算法
  • 将结果表示为可打印字符串
后者很简单:使用
Convert.ToBase64String(byte[])
。我所知道的所有加密算法都是以二进制数据的形式工作的,因此您需要首先将输入转换为二进制数据(例如,使用
Encoding.UTF8.GetBytes(text)
),然后进行加密,然后使用
convert.ToBase64String
将其转换回文本。解密是使用
Convert.FromBase64String
,然后将解密二进制应用到二进制算法,然后反转原始转换(例如
Encoding.UTF8.GetString(binary)

您还没有提供足够的信息来确定应该使用哪种加密算法——例如,它应该是对称的还是非对称的——但是satting通常涉及单向散列,而不是可逆加密。不过,初始化向量方面的类似概念也适用于几种加密算法

  • 加密的结果是二进制数据,因此您可以将数据转换为可打印字符,例如使用base64

  • 加密不是很快,使加密更安全的一个组成部分是使其更复杂,以便暴力攻击需要更长的时间来执行。因此,基本上,您必须在性能和安全性之间进行选择。但是,由于加密的数据很短,速度应该不是什么大问题

  • 您不应该使用记录中包含的内容作为密钥。钥匙应该单独发送给接收器,这样就不容易拿到

  • 您可以使用不同的方法来确保两个部件都有正确的钥匙,而其他人都没有

  • 也许,这取决于您使用的加密方式


  • 中有可用的加密算法,其中几个可用于您的场景。

    :感谢您的回答,我认为对称算法是我最好的选择,因为我们只有在e系统上进行加密。另一个原因是,下游系统可能连接到sql server并收集加密记录,或者将使用生成的文件,但在任何情况下,我们都不能为每个系统创建单独的记录。谢谢