Security 加密方法的解密方法

Security 加密方法的解密方法,security,encryption,Security,Encryption,我找到了一种简单的加密方法来加密密码。(我想是的)。我想在我的申请中采用这种方法。但是我正在努力开发一种解密方法,以获得用这种加密方法加密的实际字符串。有谁能告诉我这种加密方法的解密方法吗?提前谢谢 public static string Encode(string value) { var hash = System.Security.Cryptography.SHA1.Create(); var encoder = new System.Text.A

我找到了一种简单的加密方法来加密密码。(我想是的)。我想在我的申请中采用这种方法。但是我正在努力开发一种解密方法,以获得用这种加密方法加密的实际字符串。有谁能告诉我这种加密方法的解密方法吗?提前谢谢

public static string Encode(string value)
    {
        var hash = System.Security.Cryptography.SHA1.Create();
        var encoder = new System.Text.ASCIIEncoding();
        var combined = encoder.GetBytes(value ?? "");
        return BitConverter.ToString(hash.ComputeHash(combined)).ToLower().Replace("-", "");
    }

如果我没有弄错的话,这个方法就是使用SHA1标准对密码进行散列

哈希是一种特殊类型的单向加密。也就是说

我假设您想要解密它,以便根据登录表单检查某人的密码。处理的方法是存储加密的密码;然后,当有人填写您的表单时,使用相同的加密方法加密他们的输入,并查看两个加密字符串是否匹配


另一方面,如果你是散列,请不要忘记给你的散列加盐。这将要求您将散列和盐存储在数据库中;在检查密码时,只需检索与输入的用户名关联的salt,将其添加到表单输入的密码中,对其进行散列,并根据存储的salt密码检查新的散列。如果他们匹配,宾果!如果不是,则是错误的密码


更多 看看类似问题的其他答案,为了完整起见,让我补充一下

这个问题的简短答案是否定的。这些散列算法被设计为“不可破解”。然而,这并不意味着它们不能被打破。打破SHA1或任何其他基于模的哈希算法的方法是“猜测并检查”。基本上:

  • 输入密码
  • 如果它是正确的,那太好了!你进来了
  • 如果不正确,请转到1
  • 就像你遇到的任何其他密码系统一样,破解它的方法是使用蛮力。你可以想象,有很多程序就是为了实现这一点而设计的。散列算法的问题在于,它们对相同的输入产生相同的结果;因为您使用的是SHA1,这是一个被数百万其他应用程序使用的标准库,所以我可以向您保证,如果您使用它,普通的SHA1可以而且将会被破坏

    解决这个问题的办法是使用盐渍,如上所述。这会更改每个用户的特定密码输入;这意味着,如果三个用户都有相同的密码,比如说“password”,那么每个用户的密码都将作为不同的结果存储在数据库中

    如果它们是在不含盐的情况下通过sha1,那么它们都是一样的,因为您正在输入相同的输入:

    password ---SHA1---> sha1$asdfasdfasdfasdf
    password ---SHA1---> sha1$asdfasdfasdfasdf
    password ---SHA1---> sha1$asdfasdfasdfasdf
    
    因此,如果有人访问了您的数据库,他们可以查找重复的密码并对照它们检查常用密码,直到他们意识到
    sha1$asdfasdfasdfasdf
    实际上意味着“密码”

    但通过向等式中添加盐,每个用户实际上都在输入不同的密码

    salt1password ---SHA1---> sha1$aogiahowehgpa
    salt2password ---SHA1---> sha1$oh9h42h980agh
    salt3password ---SHA1---> sha1$322tyyha0gh9w
    
    这使得你的系统几乎不可能被破解。如果有人访问了您的数据库,则不会有重复项需要检查


    所以一定要给你的大麻加盐@卡拉根:谢谢你,我试试:)@David,谢谢你提供的宝贵信息!是的,当有人在记录时,我就是这么做的。但是,当方便编辑密码时,问题就来了。我必须解密加密值并向用户显示实际密码。你能为我提供一个链接或资源的那种吗scenario@Isuru除非您存储未加密的密码,否则这是不可能的。这就是为什么大型网站从不向你显示密码的原因。这是不安全的。尝试在谷歌、Stack Exchange、Facebook等网站上更改密码。他们会允许您更改密码,但他们永远不会向您透露密码内容。它们甚至可能存储旧的散列密码,以确保您不会重复使用旧密码。散列不是一种特殊类型的加密,因为根据定义,加密是双向的。@ArtjomB。现在你只是在把单词拆开。托马托托马托。就为了这个,我的答案真的值得否决吗?可能是重复的