メッセージと秘密鍵を使用して Java プログラムに署名を生成させようとしています。私の C# プログラムは、同じメッセージと秘密鍵を使用して同じトークンを生成する必要があります。
ただし、生成されるトークンが異なるため、何かが正しく機能していません。
これら 2 つのプログラムの違いと、一致するキーを生成しない理由を特定できる人はいますか?
Java コード:
this.algorithm = "hmacSHA256";
private static Mac mac;
String message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum id urn";
String secretKey = "5771CC06-B86D-41A6-AB39-9CA2BA338E27";
if( mac == null ) {
mac = Mac.getInstance(algorithm);
SecretKeySpec secret = new SecretKeySpec(secretKey.getBytes("US-ASCII"),
mac.getAlgorithm());
mac.init(secret);
}
this.signature = new String(Base64.encodeBase64(mac.doFinal(message.getBytes("US-ASCII"))));
C# コード:
string message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum id urn";
string secret = "5771CC06-B86D-41A6-AB39-9CA2BA338E27";
secret = secret ?? "";
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(secret);
byte[] messageBytes = encoding.GetBytes(message);
using (var hmacsha256 = new System.Security.Cryptography.HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return Convert.ToBase64String(hashmessage);
}