2013-08-16 27 views
74

JavaScriptを使用してクライアント側で情報を暗号化および復号化する個人用の小さなアプリケーションを作成することに興味があります。暗号化された情報は、サーバー上のデータベースに格納されますが、復号化されたバージョンには格納されません。JavaScript文字列の暗号化と復号化ですか?

これはスーパー・デュパー・セキュアである必要はありませんが、現在のアルゴリズムは使用したいと思います。

理想的には私はエンコードされた文字列、および、後でそれをデコードする

var sensical = decrypt(gibberish, key); 

のようなものを生成する

var gibberish = encrypt(string, salt, key); 

ような何かをすることができると思います。私が見なければならない http://bitwiseshiftleft.github.io/sjcl/

その他のライブラリ:

は、これまでのところ私はこれを見てきましたか?

+2

[JavascriptのAES暗号化]を見てみましょう(http://stackoverflow.com/questions/793812/javascriptのような他のCDNを使用-aes-encryption) – mc10

+2

http://jsfiddle.net/kein1945/M9K2c/ –

+7

ここではいくつかの用語はオフです。ここには単純なバージョン 1があります。ソルトは、ハッシュされる情報(通常はパスワード)に追加されます。彼らの目的は、ハッシュを塩なしのものと違うものにすることです。これは、データベースがハッキングされ、ハッシュされたユーザーのパスワードがなくなると、ハッシュの事前生成が行われるので便利です。 2.ハッシングは、入力を出力に変換する一方向操作です。簡単に元に戻すことはできません。 3.エンコーディングは暗号化ではありません。 base64_encode、urlencodeなど – des

答えて

36

CryptoJS

これは、多くの機能を備えた堅牢な暗号ライブラリです。これは、ハッシャ、HMAC、PBKDF2および暗号を実装します。この場合、暗号は必要なものです。プロジェクトのホームページでクイックスタートを確認してください。

あなたはAESと同じように何かをすることができます:セキュリティに関しては

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script> 

<script> 
    var encryptedAES = CryptoJS.AES.encrypt("Message", "My Secret Passphrase"); 
    var decryptedBytes = CryptoJS.AES.decrypt(encryptedAES, "My Secret Passphrase"); 
    var plaintext = decryptedBytes.toString(CryptoJS.enc.Utf8); 
</script> 

を、AESアルゴリズムは

を編集切れ目のないものと考えている私の執筆の時点で:

はそうオンラインのURLは&ですダウンロードしたファイルを暗号化に使用するには下記のリンク&の各ファイルをあなたのルートフォルダに置きます。

https://code.google.com/archive/p/crypto-js/downloads

またはhttps://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/aes-min.js

98

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase"); 
 
//U2FsdGVkX18ZUVvShFSES21qHsQEqZXMxQ9zgHy+bu0= 
 

 
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase"); 
 
//4d657373616765 
 

 

 
document.getElementById("demo1").innerHTML = encrypted; 
 
document.getElementById("demo2").innerHTML = decrypted; 
 
document.getElementById("demo3").innerHTML = decrypted.toString(CryptoJS.enc.Utf8);
Full working sample actually is: 
 

 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script> 
 

 
<br><br> 
 
<label>encrypted</label> 
 
<div id="demo1"></div> 
 
<br> 
 

 
<label>decrypted</label> 
 
<div id="demo2"></div> 
 

 
<br> 
 
<label>Actual Message</label> 
 
<div id="demo3"></div>

+0

Thanks Tomas。あなたは暗号化された刺すことが互換性のあるJavaScriptであることが保証されていることを知っています – mark1234

+3

Encryptedは実際にはオブジェクトですが、encrypted.toString()を呼び出して文字列を取得できます。後でこの文字列を解読することができます:http://jsbin.com/kofiqokoku/1/ –

+3

しかし、シークレットパスフレーズをどのようにして保護することができますか? – duykhoa

関連する問題