为了账号安全,请及时绑定邮箱和手机立即绑定

下面单向加密的解密方法

下面单向加密的解密方法

C#
湖上湖 2023-08-13 13:58:24
我有一种加密密码的方法,我认为它是单向加密,是否可以通过其他方法解密?    string HashPass(string pass)    {        var bytes = System.Text.Encoding.Unicode.GetBytes(pass);        var inArray = System.Security.Cryptography.HashAlgorithm.Create("MD5")?.ComputeHash(bytes);        return Convert.ToBase64String(inArray);    }
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

哈希是一种单向函数,它将多个值映射到一个结果,这意味着您无法在给定结果的情况下找到原始值。

然而,存储原始值和哈希结果的数据库确实存在,因此 MD5 哈希确实不利于安全。例如,如果您给我哈希值e10adc3949ba59abbe56e057f20f883e,我可以搜索原始值,如果幸运的话,我会发现123456是该哈希结果的可能答案。

查看完整回答
反对 回复 2023-08-13
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我认为您很难识别加密和散列之间的区别。尽管它们都与密码学领域相关,但它们解决的问题不同。它们都用于安全地存储数据,但解决问题的方式差异很大。

这里要注意的关键是 - 散列是一种单向函数,而加密则不是。

一个非常简单且安全的散列算法将需要一个字符串(或任何类型的数据)作为参数,这就是创建散列字符串(或数据)所需的全部内容。然而,作为旁注,为了提高算法的安全性,他们采用其他参数,例如盐。但为了简单起见,可以安全地忽略这一点。一旦获得散列数据,就不可能将其恢复到实际状态(未散列),因为这会违背对其进行散列的目的。

另一方面,加密是双向的。与散列一样,它的目的是打乱数据,以便没有人可以读取或理解它,在这种情况下,我们希望恢复数据。为了实现这一点,算法中还有一个重要的参数——密钥!此密钥用于加密算法(例如 AES)以及要加密的数据以创建加密数据。然而,在这种情况下,我们可以使用我们使用的密钥检索原始数据。

TL;DR - 两者都有自己的使用场所。使用加密增加了正确处理密钥的责任,而散列则消除了这种麻烦,但代价是无法检索原始数据。

查看完整回答
反对 回复 2023-08-13
  • 2 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信