我读过SHA-1是一个加密的散列函数。在一次考试中,SHA-1被作为一种可能的单向加密算法.SHA-1需要一个键作为输入吗?是否需要将密钥限定为“加密”?
发布于 2013-01-22 07:33:07
这可能很容易是谷歌或维基百科,但如下所示:
沙-1是加密散列函数,但不是加密函数.你所做的SHA-1函数是不可逆转的。
沙-1可以使用密钥完成,但这将使它成为消息身份验证代码(MAC,参见HMAC)。
我同意你最后一句话。对于要加密的东西,您需要有一些密钥,或者对应于一个密钥的东西。假设您有一个(相当糟糕的)加密功能翻转输入的位,您的密钥是“翻转每一位”。另一个函数可以是使用圆形函数F的feistel网络,键K= 281474976710656作为该函数的输入。
发布于 2013-01-22 07:45:09
根据定义,散列函数不是加密。
加密是对消息(或信息)进行编码的过程,其方式是窃听者无法读取,但授权方可以读取。
和
哈希函数是一种算法,它接受任意数据块并返回一个固定大小的位字符串,即加密哈希值,因此对数据的任何更改都将(非常高概率)更改哈希值。
加密提供机密性,哈希函数提供完整性。
哈希函数与加密一起使用,以确保其完整性。
发布于 2013-01-22 15:29:43
“加密”一词的用法不正确,但广泛适用于不是加密的事物,例如,哈希。
严格的加密定义假定某些数据被转换,其方式是:
加密过程使用与用于解密的秘密数据相链接的参数是加密所必需的;该参数我们称之为密钥。当用于加密的密钥与用于解密的秘密数据相同时,则为对称加密。当加密密钥与秘密数据以数学方式链接,但又不同时,加密密钥可以安全地公开,这就是非对称加密。
因此,不可能有“单向加密”,而SHA-1不是加密.沙-1是散列:没有键,固定大小的输出( SHA-1的160位),没有反向进程(特别是,输入可以大大大于160输出位)。
不幸的是,写你的试题的人显然使用了不正确的术语;最好的做法就是在考试期间遵循他们的术语。这是同样的混淆,这导致一些人谈论密码的“加密密码”,实际上是哈希。
https://security.stackexchange.com/questions/29482
复制相似问题