2

我们需要单向加密。任何人都可以提出更好的方法

AES、DSA 和 Dygest-salt加密方法?

我认为 Dygest-salt 用于一种方式,另一种用于两种方式,但不确定哪种使用更安全。如果有人能指出这两者之间的性能比较会更好。随意建议另一种算法(特定于一种方式)。

4

3 回答 3

5

术语“单向加密”具有误导性。

AES对称加密算法(准确地说是分组密码)的一个示例。谁有密钥可以加密,谁也可以解密。您通常不是单独使用分组密码,而是使用一种操作模式

DSA根本不是一种加密算法。它是一种签名算法(或者实际上是三种算法的捆绑:密钥生成、签名、验证),我可以用我的私钥对一条数据进行签名,每个人都可以用对应的公钥检查签名。我还需要在签名之前对我的数据应用哈希函数。

(加密)散列算法(也称为(加密)消息摘要)通常是一个无密钥函数,并将(或多或少)任意大小的数据减少为固定大小的散列,因此应该很难找到两个不同的导致相同哈希的输入(通常还有更多属性)。这是一种单向函数

对于密码存储,我们不使用加密,而是一种散列形式,其中包括一个随机,因此具有不同盐的相同密码会产生不同的结果。salt 本身与哈希一起存储,因此可用于稍后检查密码。(可能这就是您所说的Digest-Salt。) 另外,您不应该使用普通的快速散列函数,而应该使用慢速散列函数。

于 2012-06-09T18:19:50.160 回答
3

查看这篇关于安全存储密码的文章。(对于那些不想点击链接的人,请查看 PBKDF2 和 bcrypt。)

于 2012-06-07T05:32:02.430 回答
1

您正在寻找“单向”加密。您正在寻找性能特征。并且您正在调用 2 个实现和一个概念(Dygest-salt 是概念性的)

你需要问以下问题:

  1. 你有没有想解密它
  2. 你关心重复吗

普通加密是将已知数据片段转换为可以使用用于原始加密的密钥解密的等效数据集。尺寸(进)== 尺寸(出)

散列是将大量文本语料库缩减为比原始文本更容易比较的小字符串的概念。一般来说,这意味着源数据比散列数据大得多。

在密码学上,散列是将大量文本语料库缩减为一个小字符串,其中内容的变化会导致显着不同的散列,因此很难产生两个导致相同散列的源。

散列应该比完全加密“更快”,因为我们最终并不关心内容 - 事实上,您可以在散列模式下使用 AES ,这使您具有相同的特征,但最终产品是散列,而不是加密.

如果您从不想获得纯文本,那么您应该始终使用哈希函数——它们是为相对快速的操作而设计的——它们不是免费的,但这就是重点。

于 2012-06-07T06:06:58.230 回答