私はsoap webserviceを認証しようとしていますが、私がjavaで生成するSHA1ハッシュは動作していませんが、.Netで生成されたハッシュは動作します。.Netで生成されるSHA1ハッシュのJava同等のものは何ですか?
このJavaコードと同等の.NETコードは何ですか?
//.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
// Javaの - これは私が生成されたハッシュ
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);
コモンズ・コーデック-1.4.jarを使用してみましたものです: 88e7c8fc13ac75e8efc8d0c00182caa6dc087093
それぞれのブロックはどのような文字列を生成しますか? – alberge
'Encoding.Unicode.GetBytes'は' String.getBytes'とは異なるエンコーディングをしているようです。これら2つの出力を比較しようとしましたか? 'token.getBytes(" UTF-16LE ")'を試してください。 –
@albergeは、私の編集で追加しました – Ram