Java 代码应具有与 C# 代码相同的功能。这段代码是一样的吗?
这是 C# 代码中的代码:
byte[] hashBytes;
UnicodeEncoding encoding = new UnicodeEncoding();
hashBytes = encoding.GetBytes(inputstr.Text.ToUpper().Trim());
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] cryptPassword = sha1.ComputeHash(hashBytes);
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
SHA1.Text = enc.GetString(cryptPassword);
outputstr.Text = Convert.ToBase64String(cryptPassword);
这是 Java 移植代码,但我得到不同的输出:
byte[] pwBytes = new String("password".toUpperCase().getBytes(), "UTF-16").getBytes();
MessageDigest md = null;
md = MessageDigest.getInstance("SHA-1");
byte[] sha1pw = md.digest(pwBytes);
final BASE64Encoder encoder = new BASE64Encoder();
String encodedPw = encoder.encode(sha1pw);
Java 代码计算encodedPw 的方式应该与C# 代码计算outputstr.Text 的方式相同。
很抱歉,我无法运行 C# 代码来提供示例。Java 代码将“密码”哈希为oghZbO1T3U/eu3POLIIQweZ/gvQ=
.