如何加密文本字符串,以便每次加密字符串不同,即使值相同

JMK*_*JMK 5 .net c# encryption

我希望安全地加密一串文本,并且每次都使加密字符串不同,但始终能够解密.

例如,如果我在两个不同的时间加密文本"FooBar",我希望每次加密的字符串看起来不同,我将如何进行此操作?

另外,我可以使用哪种最安全的加密方式来执行此操作?

我想尽可能使用C#和.Net,但我是一个完全加密的菜鸟!

谢谢

Eri*_*ert 10

我希望安全地加密一串文本,并且每次都使加密字符串不同,但始终能够解密.

这是一个非常常见的要求.

到目前为止,每个答案都说使用. 这是不正确的,因为你知道你是否阅读了关于这个主题的维基百科页面的第一句话:

"在密码学中,盐由随机位组成,为单向函数创建一个输入."

你想要单向功能吗?不.您刚才说您需要能够解密字符串,因此它不能是单向函数.

你想要的是一个初始化向量.

"在密码学中,初始化向量是加密原语的固定大小输入,通常需要随机或伪随机.随机化对于加密方案实现语义安全至关重要,这是一种在同一密钥下重复使用该方案的属性.不允许攻击者推断加密消息的各段之间的关系."

你明智地指出:

我是一个完全加密的菜鸟!

然后不要试图自己这样做; 你会弄错的.很容易误用加密来构建一个,即菜鸟不会破坏的系统.请记住,你的目标是建立一个系统,让一个对密码有更多了解的人不会破坏.

此外,在互联网上询问随机陌生人的帮助是了解密码学真相的一种不好的方法.大多数能够回答这个问题的人,包括我自己,只是比你更少的愚蠢.到目前为止,请查看此页面上的所有可怕建议.例如,两个答案建议使用当前时间作为随机盐.完全疯狂的 ; 盐的全部意义在于它无法提前预测! 从了解他们正在谈论的内容的真正专家那里获得建议.

我的建议:聘请专家解决您的特定问题.要了解加密,请从"应用密码学"等一些介绍性文本开始,以便了解加密实际解决的问题以及如何有效地使用它.Crypto不是你在数据上撒上的神奇小精灵粉尘,以确保其安全; 它只是保护数据免受攻击的整个战略的一小部分.

  • 嗯,我想知道Applied Crypto对Noob的帮助有多好.我个人并不认为Applied Crypto适合作为安全应用加密的介绍,它比标题适用更多的数学,当然不是一本书说:你在这里遇到问题X,现在这里是解决方案A,B和C可供选择. (2认同)