2012-02-06 4 views
10

Я пытаюсь порт следующий код PHP в JavaScript на Node.js:Шифрование в nodejs

$mac = hash_hmac('SHA256', 'string', 'secret', true);
$coded = base64_encode($mac);

Я попытался следующие:

var Crypto = require('crypto');
var code = Crypto.util.bytesToBase64(Crypto.HMAC(Crypto.SHA256, 'string', 'secret', { asBytes: true }));

Я получаю ошибка:

TypeError: Object #Object has no method 'HMAC'

Я новичок в node.js, wh я делаю неправильно?

Update:

var code = Crypto.createHmac('SHA256', secret_key).update(to_encode).digest('base64');

ответ

10

Вы хотите использовать функцию createHmac вместо этого.

Crypto.createHmac("SHA256", 'secret').update('string').digest('base64') 
+1

Спасибо. Я получаю «Должен указывать строку hashtype в качестве аргумента». – Alex

+0

@Alex Извините, документы не так уж велики, поэтому я не мог понять, что именно он хотел. Надеюсь, это поможет вам в правильном направлении. – Tesserex

+1

Crypto.SHA256 должен быть «SHA256». Благодаря! – Alex

0

Метод называется createHmac

> Crypto = require('crypto'); 
{ Credentials: [Function: Credentials], 
    createCredentials: [Function], 
    Hash: [Function], 
    createHash: [Function], 
    Hmac: [Function], 
    createHmac: [Function], 
    Cipher: [Function], 
    createCipher: [Function], 
    createCipheriv: [Function], 
    Decipher: [Function], 
    createDecipher: [Function], 
    createDecipheriv: [Function], 
    Sign: [Function], 
    createSign: [Function], 
    Verify: [Function], 
    createVerify: [Function], 
    DiffieHellman: [Function], 
    createDiffieHellman: [Function], 
    pbkdf2: [Function], 
    randomBytes: [Function], 
    pseudoRandomBytes: [Function], 
    rng: [Function], 
    prng: [Function] } 
+0

Я взял его здесь: http://stackoverflow.com/questions/7909288/php-javascript-jquery-base64-sha256-encoding – Alex

+0

@Alex Это, вероятно, для более старой версии узла – TimWolla

Смежные вопросы