2012-02-06 14 views
10

estoy tratando de portar el siguiente código php a javascript en Node.js:cifrado en nodejs

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

He intentado lo siguiente:

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

consigo el error:

TypeError: Object #Object has no method 'HMAC'

Soy nuevo en node.js, wh ¿Estoy haciendo algo mal?

Actualización:

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

Respuesta

10

Usted desea utilizar la función createHmac lugar.

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

Gracias. Obtengo "Debe dar una cadena de tipo hash como argumento". – Alex

+0

@Alex Disculpe, los documentos no son tan buenos, así que no pude entender qué es exactamente lo que quería. Espero que esto te lleve en la dirección correcta. – Tesserex

+1

Crypto.SHA256 debe ser 'SHA256'. ¡Gracias! – Alex

0

El método se llama 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

me tomó de aquí: http://stackoverflow.com/questions/7909288/php-javascript-jquery-base64-sha256-encoding – Alex

+0

@Alex Es probablemente por una versión anterior del nodo – TimWolla