Шифрование в nodejs

Я пытаюсь перенести следующий php-код на javascript на node.js:

$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 не имеет метода HMAC

Я новичок в node.js, что я делаю не так?

Обновление:

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


person Alex    schedule 06.02.2012    source источник


Ответы (2)


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

Crypto.createHmac("SHA256", 'secret').update('string').digest('base64')
person Tesserex    schedule 06.02.2012
comment
Спасибо. Я получаю в качестве аргумента строку хеш-типа. - person Alex; 06.02.2012
comment
@Alex Извините, документы не такие уж и классные, поэтому я не мог понять, что именно он хотел. Надеюсь, это приведет вас в правильном направлении. - person Tesserex; 06.02.2012
comment
Crypto.SHA256 должен быть SHA256. Спасибо! - person Alex; 06.02.2012

Метод называется 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] }
person TimWolla    schedule 06.02.2012
comment
Я взял его отсюда: stackoverflow.com/ questions / 7909288 / - person Alex; 06.02.2012
comment
@Alex Вероятно, это для более старой версии узла - person TimWolla; 06.02.2012