【发布时间】:2013-12-05 08:43:03
【问题描述】:
我有一个函数 md5_encode
public string MD5_encode(string str_encode)
{
MD5 md5Hash = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(str_encode));
// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
// Return the hexadecimal string.
return sBuilder.ToString();
}
我无法解码。我在互联网上搜索并找到了类似的东西
public static string Encrypt(string toEncrypt, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
// Get the key from config file
string key = (string)settingsReader.GetValue("SecurityKey", typeof(String));
//System.Windows.Forms.MessageBox.Show(key);
if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(key);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
tdes.Clear();
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
但我不知道该代码是否有效,有人帮助我,解码函数 MD5_encode(string str_encode) 或向我展示有关不同 MD5_encode(string str_encode) 和 Encrypt(string toEncrypt, bool useHashing) 的详细信息 非常感谢您的帮助:)
【问题讨论】:
-
你不能“解码”一个 MD5 散列,因为它是一个散列,而不是原始数据的编码表示。
-
1) MD5 是单向的。没有有效的解码操作。 2)您找到的代码示例是网络上最丑陋的加密示例之一。不知道为什么人们一直在复制它。
-
你可以告诉我,我如何通过 md5 编码一个字符串
-
@user3050564 - 你需要改变你的问题(或问另一个问题)来告诉你想要做什么,而不是要求“通过 MD5 编码”。您将函数命名为
Something_encode的事实并没有使该函数实际上进行可逆编码/加密。