【问题标题】:c# md5 encrypting a string with a key and decrypting [duplicate]c# md5用密钥加密字符串并解密[重复]
【发布时间】:2015-07-31 22:30:17
【问题描述】:

我想用 md5 加密一个字符串值,然后解密它,这样我就可以用一个密钥。所以我搜索了如何做到这一点,我只发现了另一种算法。

这是加密类:

class crypt
    {

        public string encrypt(string bhash)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(bhash));
            byte[] result = md5.Hash;
            StringBuilder strBuilder = new StringBuilder();
            for (int i = 0; i < result.Length; i++)
            {
                strBuilder.Append(result[i].ToString("x2"));
            }
            bhash = strBuilder.ToString();
            return bhash;
        }
    }

【问题讨论】:

  • 你正在做的是散列。散列是不可逆的。您只能比较哈希
  • MD5 是一种单向哈希。您可以加密但不能真正解密。 PS:你不需要 stringbuilder 那里。您可以使用 BitConverter 或者您可以使用 base64 编码来获取文本版本以保存为字符串。
  • 不建议添加 md5 的东西

标签: c# encryption hash md5


【解决方案1】:

解密 md5 加密的唯一方法是通过暴力破解所有可能的原始内容。

没有解密算法。您必须测试所有可能的值并对其进行加密并检查匹配以找到原始值。

【讨论】:

  • 是的,但如果我用密钥加密我不能?喜欢这里:social.msdn.microsoft.com/Forums/vstudio/en-US/… RSA 算法。
  • RSA 是一种使用公钥和私钥的非对称加密算法,一个用于加密,另一个用于解密。 MD5 是一个散列函数,不是为了方便解密。有关此帖子的更多信息:security.stackexchange.com/questions/2298/…
  • md5 旨在在编码时产​​生一致的结果,但无法解码的结果。一种流行的用途是在有加密密码数据库的系统中。用户可以输入密码,密码被加密并根据数据库值进行检查。它同样用于软件验证。
猜你喜欢
  • 2011-06-17
  • 2013-04-20
  • 2022-01-25
  • 2016-10-15
  • 2014-06-21
  • 2015-11-02
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多