2016-11-17 6 views
0

バイト変換にはあまり便利ではないので、何か危険なことをしないようにしたいと思います。CryptoJS分割ワードアレイを2つにする

私は単にCryptoJS pbkdf2を使用して512ビットの鍵を生成しています。

次に、このキーを半分に分割して2つの256ビットキーを生成したいとします。

generateKeyPair = function(input, salt) { 
    var output = CryptoJS.PBKDF2(input, salt, { keySize: 512/32 }); 

    var firstHalf = _.clone(output); 
    var secondHalf = _.clone(output); 
    var sigBytes = output.sigBytes/2; 

    firstHalf.words = output.words.slice(0, 10); 
    secondHalf.words = output.words.slice(10, 20); 
    firstHalf.sigBytes = sigBytes; 
    secondHalf.sigBytes = sigBytes; 

    return [firstHalf.toString(), secondHalf.toString()]; 
    } 

私はgenerateKeyPair("hello", "world")のために得る出力は次のとおりです。

[ "798ef2617367d80daeacf8b457af7903eebf6d1f384c9fed762b14186036e912"、 "0a9782aa773bdafcd9cd259e95381ac9ab26d026fe6a3375a93dc6b2a69e7ac3"]

ここでアンダースコアはlodashを使用しています。これは正しいか?

答えて

0

解決策は問題ありません。私は最近、この問題を半分の文字列を分割するだけで解決しました。私の例では、WordArray形式のキーを取り、各半分をWordArray形式で返します。

function splitKey(key) { 
    const keyString = key.toString() 
    const firstHalf = keyString.slice(0,keyString.length/2) 
    const secondHalf = keyString.slice(keyString.length/2,keyString.length) 

    return [CryptoJS.enc.Hex.parse(firstHalf), CryptoJS.enc.Hex.parse(secondHalf)] 
} 
関連する問題