JavaScriptでAES 256ビット暗号化に使用できるライブラリはありますか?
JavaScriptでAES 256ビット暗号化に使用できるライブラリはありますか?
回答:
JSAESは、JavaScriptでのAESの強力な実装です。 http://point-at-infinity.org/jsaes/
以下は、slowAESを使用するデモページです。
slowAESは簡単に使用できました。論理的に設計されています。合理的なOOパッケージ。IVや暗号化モードなどのノブとレバーをサポートします。.NET / C#との良好な互換性。名前はほほえみです。C ++では実装されていないため、「低速 AES」と呼ばれます。しかし、私のテストでは、それは非現実的に遅くはありませんでした。
ECBモードがありません。また、CTRモードもありませんが、ECBモードがあればかなり簡単に作成できます。
暗号化のみに焦点を当てています。JavaScriptでRFC2898準拠のパスワードベースのキー導出を行う優れた補足クラスがAnandam から入手できます。このライブラリのペアは、類似の.NETクラスでうまく機能します。相互運用性が良好です。ただし、SlowAESとは対照的に、Javascript PBKDF2は、キーの生成時にRfc2898DeriveBytesクラスよりも著しく低速です。
技術的に優れた相互運用性があることは当然のことですが、私にとって重要な点は、SlowAESで採用されているモデルが使い慣れていて使いやすいことでした。AES用の他のJavascriptライブラリのいくつかは、理解して使用するのが難しいことがわかりました。たとえば、IVやモード(CBC、ECBなど)を設定する場所が見つからなかったものもあります。物事は私がそれらを期待していた場所ではありませんでした。SlowAESはそうではありませんでした。プロパティは、私が期待していたとおりでした。Javaと.NETの暗号化プログラミングモデルに慣れているので、簡単に習得できました。
AnandamのPBKDF2はそのレベルではありませんでした。DeriveBytes関数の呼び出しは1つしかサポートされていないため、パスワードからキーとIVの両方を取得する必要がある場合、このライブラリは変更されずに機能しません。若干の変更が加えられており、その目的のためにうまく機能しています。
編集:SlowAESのパッケージングの例とAnandamのPBKDF2の修正バージョンをWindowsスクリプトコンポーネントにまとめました。このAESをパスワード派生キーで使用すると、.NET RijndaelManagedクラスとの適切な相互運用が示されます。
EDIT2:デモページは、WebページからこのAES暗号化を使用する方法を示しています。.NETでサポートされているのと同じ入力(iv、キー、モードなど)を使用すると、.NET Rijndaelクラスとの相互運用性が向上します。「ソースの表示」を実行して、そのページのJavaScriptを取得できます。
EDIT3
後期追加:Javascript暗号化は有害と見なされました。読む価値があります。
AES暗号化を検索したところ、Standfordの学生からこれが見つかりました。最速だと主張している。CCM、OCB、GCMおよびブロック暗号化をサポートします。 http://crypto.stanford.edu/sjcl/
「JavaScript AES」のグーグルでいくつかの例が見つかりました。最初に表示されたものは、アルゴリズムを説明するとともにソリューションを提供するように設計されています。
この投稿は古いものですが、crypto-jsが最も完全なjavascript暗号化ライブラリになる可能性があります。
CryptoJSは、JavaScriptで実装された暗号アルゴリズムのコレクションです。次の暗号が含まれています:AES-128、AES-192、AES-256、DES、トリプルDES、ウサギ、RC4、RC4Dropおよびハッシャー:MD5、RIPEMD-160、SHA-1、SHA-256、SHA-512、SHA 224、256、384、または512ビットの-3。
あなたはそれらを見てみたいことがあり、クイックスタートガイドも以下のNode.jsのポートの基準としています。
node-cryptojs-aesは、crypto-jsの node.jsポートです
最近、JavaScriptとPythonの間で暗号化/復号化の相互運用性を実行する必要がありました。
具体的には...
1)AESを使用してJavaScriptで暗号化し、Pythonで復号化する(Google App Engine)2)RSAを使用してJavaScriptで暗号化し、Pythonで復号化する(Google App Engine)3)pycryptoを使用する
RSAとAESのさまざまなバージョンがウェブ上にたくさんあり、それらのアプローチはすべて異なっていましたが、エンドツーエンドのJavaScriptとPythonの相互運用性の良い例は見つかりませんでした。
結局、何度も試行錯誤した結果、自分のニーズに合ったものを何とかまとめることができました。
とにかく、私はjs / webappがAESと公開鍵と秘密鍵のRSAのものを使用するgoogle app engineでホストされたpythonサーバーと通信する例をノックアップしました。
同じことを実行する必要がある他の人に役立つ場合に備えて、リンクでここに含めます。
http://www.ipowow.com/files/aesrsademo.tar.gz
そして、見デモでRSA-AES-デモDOT appspotドットコム
編集:ブラウザーコンソールの出力を確認し、ソースを表示して、デモで何が行われているのかに関するヒントと有用なメッセージを取得します
編集:ソースへの非常に古く、機能していないリンクを更新して、現在指すようにしました
私自身の経験から判断すると、asmcrypto.jsはJavaScriptで最速のAES実装を提供します(特にFirefoxでは、そこでasm.jsを完全に活用できるため)。
Readmeから:
Chrome/31.0 SHA256: 51 MiB/s (9 times faster than SJCL and CryptoJS) AES-CBC: 47 MiB/s (13 times faster than CryptoJS and 20 times faster than SJCL) Firefox/26.0 SHA256: 144 MiB/s (5 times faster than CryptoJS and 20 times faster than SJCL) AES-CBC: 81 MiB/s (3 times faster than CryptoJS and 8 times faster than SJCL)
編集:ウェブ暗号化APIが今され、ほとんどのブラウザで実装し、パフォーマンスを気にしている場合、プライマリ液として使用する必要があります。IE11は、約束を使用しない標準の初期ドラフトバージョンを実装したことに注意してください。
いくつかの例がここにあります:
CryptoJSを使用する
これがコードです:https : //github.com/odedhb/AES-encrypt
そして、これがオンラインで動作する例です:https : //odedhb.github.io/AES-encrypt/
asmcrypto.jsを試してください—とても高速です。
PS:私は著者であり、あなたの質問があれば答えることができます。また、フィードバックをいただければ幸いです:)
http://www.movable-type.co.uk/scripts/aes.htmlライブラリが役立つ場合があります。
SSLの使用を回避するためにJavaScriptを使用しようとしている場合は、もう一度考えてください。多くの中間的な対策がありますが、SSL のみが安全な通信を提供します。JavaScript暗号化ライブラリは、特定の一連の攻撃に対しては役立ちますが、真の中間者攻撃には役立ちません。
カスタムドメインでGoogle App EngineのSSLを探している場合は、wwwizer.comをご覧ください。
次の投稿では、JavaScriptを使用して安全な通信の試行を作成する方法と、それを誤解させる方法について説明してい ます。SSL/ HTTPSの代わりにJavaScript暗号化モジュールを使用してください
Cryptojsの代替としてStanfordフリーlibもあります
AES-256をサポートする別のソリューション:https : //github.com/digitalbazaar/forge