Javaとノード付きのサーバーでアプリを作成しており、認証方法として2つの文字列を比較したいと思います。
Java私はこれをやっています:
try {
String secret = "secret";
String message = "Message";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
String hash = Base64.encodeBase64String(sha256_HMAC.doFinal(message.getBytes()));
System.out.println(hash);
} catch (Exception e){
System.out.println("Error");
}
しかし、私はまだnode.jsにかなり慣れていないので、そこで同じことを行う方法を見つけようとしています。これは私が持っているものです:
var crypto = require('crypto');
var sha256 = crypto.createHash('HMAC-SHA256').update('Message').digest("base64");
どうすれば彼らに同じことをさせることができますか? node.jsにまだソルトがありません。提案?
編集:以下の答えは私が解決策を見つけるのに役立ちました。他のAndroidユーザーがこの問題を抱えている場合、このコードは私のために機能しました:
try {
String secret = "secret";
String message = "Message";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
byte[] s53 = sha256_HMAC.doFinal(message.getBytes());
String hash = Base64.encodeToString(s53, Base64.DEFAULT);
Log.e("beadict", hash);
} catch (Exception e){
System.out.println("Error");
}
そしてこれはノードで:
var crypto = require('crypto');
var hash = crypto.createHmac('SHA256', "secret").update("Message").digest('base64');
HMACを使用する場合は、メソッドcrypto.createHmac(algorithm, key)
を使用する必要があります。
Node.jsにまだソルトがありません
Javaコード.。でソルトを使用していないようです。
次の行を使用できます。
let test = crypto.createHmac('sha256', "key").update("json").digest("base64");
最後にbase64に変換します。