【发布时间】:2011-12-17 08:32:33
【问题描述】:
在过去的 5 个小时里,我试图做一些应该非常简单的事情,并且在 C# 中只用了 10 分钟就完成了,但在 Java 中没有运气。 我有一个 32 大写和数字字符串 (A-Z0-9),我需要将此字符串转换为 Dec,然后 md5 它。 我的问题是我没有 unsgined 字节,所以我不能 md5 我的数组:\
这是我需要在 python 中做的事情:
salt = words[1].decode("hex")
passwordHash = generatePasswordHash(salt, pw)
generatePasswordHash(salt, password):
m = md5.new()
m.update(salt)
m.update(password)
return m.digest()
这里是 C# :
public static string GeneratePasswordHash(byte[] a_bSalt, string strData) {
MD5 md5Hasher = MD5.Create();
byte[] a_bCombined = new byte[a_bSalt.Length + strData.Length];
a_bSalt.CopyTo(a_bCombined, 0);
Encoding.Default.GetBytes(strData).CopyTo(a_bCombined, a_bSalt.Length);
byte[] a_bHash = md5Hasher.ComputeHash(a_bCombined);
StringBuilder sbStringifyHash = new StringBuilder();
for (int i = 0; i < a_bHash.Length; i++) {
sbStringifyHash.Append(a_bHash[i].ToString("X2"));
}
return sbStringifyHash.ToString();
}
protected byte[] HashToByteArray(string strHexString) {
byte[] a_bReturn = new byte[strHexString.Length / 2];
for (int i = 0; i < a_bReturn.Length; i++) {
a_bReturn[i] = Convert.ToByte(strHexString.Substring(i * 2, 2), 16);
}
return a_bReturn;
}
我很乐意在这方面得到帮助 :)
【问题讨论】:
-
Java 还是 Python?你让它有点混乱。
-
我认为 Python 是他的源语言。他正在尝试转换为 Java/C#,但不能转换为 Java。
-
我正在尝试将上面的 Phyton 和 C# 代码转换成 Java,这是我现在学习的 [Java]
-
什么是'32 UpperCase and Numeric String (A-Z0-9)'?