26

Javascript でクライアント側の暗号化を行う方法を検討しており ( http://www.matasano.com/articles/javascript-cryptography/を念頭に置いて)、SJCLを見つけました。しかし、良いコード例が見つからないようです。ポインタはありますか?

4

2 に答える 2

45

私は昨年、JavaScript と Web 暗号化の開発者ガイドというタイトルのプレゼンテーションを行い、 https://jswebcrypto.azurewebsites.net/でデモ サイトをオンラインにしました。

これには、OpenSSL コマンドライン (ベースラインとして) SJCLCryptoJSNode.js Crypto、さらにはW3C Web Cryptography APIの単純な Hash、HMAC、PBKDF2、および AES の例が含まれます。

SJCL の例を次に示します。

ハッシュ

var out = sjcl.hash.sha1.hash("The quick brown fox jumps over the lazy dog");
var hash = sjcl.codec.hex.fromBits(out)
// "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"

HMAC

var key = sjcl.codec.utf8String.toBits("key");
var out = (new sjcl.misc.hmac(key, sjcl.hash.sha256)).mac("The quick brown fox jumps over the lazy dog");
var hmac = sjcl.codec.hex.fromBits(out)
// "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"

PBKDF2

var hmacSHA1 = function (key) {
    var hasher = new sjcl.misc.hmac( key, sjcl.hash.sha1 );
    this.encrypt = function () {
        return hasher.encrypt.apply( hasher, arguments );
    };
};

var passwordSalt = sjcl.codec.hex.toBits( "cf7488cd1e48e84990f51b3f121e161318ba2098aa6c993ded1012c955d5a3e8" );
var derivedKey = sjcl.misc.pbkdf2( "password", passwordSalt, 100, 256, hmacSHA1 );
var hexKey = sjcl.codec.hex.fromBits( derivedKey );
// c12b2e03a08f3f0d23f3c4429c248c275a728814053a093835e803bc8e695b4e

: これには、sjcl.jsに加えて sha1.js を含める必要があります。

于 2014-01-23T12:03:57.883 に答える