我试图验证soap web服务,但我在java中生成的SHA1哈希不起作用,但使用.Net生成的哈希工作正常。在.Net中生成的SHA1哈希等效于什么?
这个.Net代码的java等价物是什么?
//.Net
var token = "H?OIgSJ35~LKJ:9~~7&sUtHDeKAv*[email protected]?cEwV[}[email protected]%}";
var shaProvider = new SHA1Managed();
var rawKey = Encoding.Unicode.GetBytes(token);
var rawHash = shaProvider.ComputeHash(rawKey);
var signature = BitConverter.ToString(rawHash).Replace("-", "").ToLower();
哈希生成:a508a29efeea2821e519fcbf64f164dd5d672233
//爪哇 - 这是我尝试使用公地编解码器1.4.jar
String token = "H?OIgSJ35~LKJ:9~~7&sUtHDeKAv*[email protected]?cEwV[}[email protected]%}";
MessageDigest cript = null;
try {
cript = MessageDigest.getInstance("SHA1");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cript.reset();
cript.update(token.getBytes());
String password = new String(Hex.encodeHex(cript.digest()));
System.out.println(password);
哈希产生: 88e7c8fc13ac75e8efc8d0c00182caa6dc087093
这些相应的块产生什么字符串? – alberge 2012-04-04 10:36:16
看起来'Encoding.Unicode.GetBytes'具有与'String.getBytes'不同的编码。你有没有试过比较这两个输出?尝试'token.getBytes(“UTF-16LE”)'。 – 2012-04-04 10:42:52
@alberge,在我的编辑中加入了那些 – Ram 2012-04-04 10:49:25