2016-11-07 9 views
0

sha512と繰り返し回数で私の文字列をPBKDF2に変換したい。私はnodejsで "pbkdf2"モジュールを使っていました。どのように私は角度JSで同じを達成することができます。Angular JS暗号。 pbkdf2とiteration

答えて

1
あなたは、組み込みで使用できる

WebCryptographyApiネイティブサポートしてすべての最新ブラウザ(http://caniuse.com/#feat=cryptography

このhereから抽出された(および変更)の例ではとhere

function deriveAKey(password, salt, iterations, hash) { 

    // First, create a PBKDF2 "key" containing the password 
    window.crypto.subtle.importKey(
     "raw", 
     stringToArrayBuffer(password), 
     {"name": "PBKDF2"}, 
     false, 
     ["deriveKey"]). 
    then(function(baseKey){ 
     // Derive a key from the password 
     return window.crypto.subtle.deriveKey(
      { 
       "name": "PBKDF2", 
       "salt": stringToArrayBuffer(salt), 
       "iterations": iterations, 
       "hash": hash 
      }, 
      baseKey, 
      {"name": "AES-CBC", "length": 128}, // Key we want.Can be any AES algorithm ("AES-CTR", "AES-CBC", "AES-CMAC", "AES-GCM", "AES-CFB", "AES-KW", "ECDH", "DH", or "HMAC") 
      true,        // Extractable 
      ["encrypt", "decrypt"]    // For new key 
      ); 
    }).then(function(aesKey) { 
     // Export it so we can display it 
     return window.crypto.subtle.exportKey("raw", aesKey); 
    }).then(function(keyBytes) { 
     // Display key in Base64 format 
     var keyS = arrayBufferToString(keyBytes); 
     var keyB64 = btoa (keyS); 
     console.log(keyB64); 
    }).catch(function(err) { 
     alert("Key derivation failed: " + err.message); 
    }); 
} 

//Utility functions 

function stringToArrayBuffer(byteString){ 
    var byteArray = new Uint8Array(byteString.length); 
    for(var i=0; i < byteString.length; i++) { 
     byteArray[i] = byteString.codePointAt(i); 
    } 
    return byteArray; 
} 

function arrayBufferToString(buffer){ 
    var byteArray = new Uint8Array(buffer); 
    var byteString = ''; 
    for(var i=0; i < byteArray.byteLength; i++) { 
     byteString += String.fromCodePoint(byteArray[i]); 
    } 
    return byteString; 
} 

使用法に

var salt = "Pick anything you want. This isn't secret."; 
var iterations = 1000; 
var hash = "SHA-512"; 
var password = "password"; 

deriveAKey(password, salt, iterations, hash); 
+0

ありがとうございます...あなたに答えを受け入れるようになります。再びあなたの努力のためにnk .. –

関連する問題