Dac*_*hmt 2 encoding md5 blackberry
我将我的密码用MD#编码在C#中并插入我的数据库中.
MD5 MD5Hasher = MD5.Create();
byte[] PasswordHash = MD5Hasher.ComputeHash(Encoding.Unicode.GetBytes(PasswordText.Value));
Run Code Online (Sandbox Code Playgroud)
PasswordHash插入原样,看起来就像0x09C09E5B52580E477514FA ..........例如.
在黑莓应用程序中,我获取密码,想要对其进行编码以将其传递给将比较两个散列密码的Web服务.问题是我的结果与我在Blackberry应用程序中创建的MD5不同.
password = Crypto.encodeStringMD5(password);
Run Code Online (Sandbox Code Playgroud)
然后在我的功能下面:
public static String encodeStringMD5(String s) throws Exception {
byte[] bytes = s.getBytes();
MD5Digest digest = new MD5Digest();
digest.update(bytes, 0, bytes.length);
int length = digest.getDigestLength();
byte[] md5 = new byte[length];
digest.getDigest(md5, 0, true);
return convertToHex(md5);
}
private static String convertToHex(byte[] data) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}
Run Code Online (Sandbox Code Playgroud)
所以它返回这样的东西:07054da3aea1cc98377fe0 ..........
知道如何在Blackberry中使用我的C#函数创建相同的哈希密码吗?
谢谢!
getBytes()java 的方法String返回与Encoding.Unicode.NET 不同的编码.您需要指定明确的编码算法.对两个平台使用UTF-8,你应该没问题.您还可以尝试为Java端的getBytes方法提供charset名称; 尝试getBytes("UTF-16")
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |