猿问

下面单向加密的解密方法

我有一种加密密码的方法,我认为它是单向加密,是否可以通过其他方法解密?


    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);

    }


湖上湖
浏览 117回答 2
2回答

一只斗牛犬

哈希是一种单向函数,它将多个值映射到一个结果,这意味着您无法在给定结果的情况下找到原始值。然而,存储原始值和哈希结果的数据库确实存在,因此 MD5 哈希确实不利于安全。例如,如果您给我哈希值e10adc3949ba59abbe56e057f20f883e,我可以搜索原始值,如果幸运的话,我会发现123456是该哈希结果的可能答案。

素胚勾勒不出你

我认为您很难识别加密和散列之间的区别。尽管它们都与密码学领域相关,但它们解决的问题不同。它们都用于安全地存储数据,但解决问题的方式差异很大。这里要注意的关键是 - 散列是一种单向函数,而加密则不是。一个非常简单且安全的散列算法将需要一个字符串(或任何类型的数据)作为参数,这就是创建散列字符串(或数据)所需的全部内容。然而,作为旁注,为了提高算法的安全性,他们采用其他参数,例如盐。但为了简单起见,可以安全地忽略这一点。一旦获得散列数据,就不可能将其恢复到实际状态(未散列),因为这会违背对其进行散列的目的。另一方面,加密是双向的。与散列一样,它的目的是打乱数据,以便没有人可以读取或理解它,但在这种情况下,我们希望恢复数据。为了实现这一点,算法中还有一个重要的参数——密钥!此密钥用于加密算法(例如 AES)以及要加密的数据以创建加密数据。然而,在这种情况下,我们可以使用我们使用的密钥检索原始数据。TL;DR - 两者都有自己的使用场所。使用加密增加了正确处理密钥的责任,而散列则消除了这种麻烦,但代价是无法检索原始数据。
随时随地看视频慕课网APP
我要回答