web-dev-qa-db-ja.com

文字列のNode.jsHmac SHA256 base64

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');
16
just_user

HMACを使用する場合は、メソッドcrypto.createHmac(algorithm, key)を使用する必要があります。

Node.jsにまだソルトがありません

Javaコード.。でソルトを使用していないようです。

8
Alex Netkachov

次の行を使用できます。

let test = crypto.createHmac('sha256', "key").update("json").digest("base64");

最後にbase64に変換します。

0
your love