我試圖驗證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