1. ホーム
  2. encryption

[解決済み] JSEncryptの理解

2022-02-09 11:03:33

質問事項

RSA暗号化・復号化のためのJavaScriptライブラリをいろいろと調べていて、JSEncryptというライブラリに出会いました。 https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/2.3.1/jsencrypt.min.js .

しかし、このライブラリがRSA暗号化・復号化に用いているロジックや演算を理解しようとすると、大変な苦労があります。主に

  1. 暗号化アルゴリズムで使用されているアルゴリズムは何ですか?
  2. どのようなパディングスキームが使われていますか?
  3. ソルトはありますか?ある場合、ソルトはどのように生成されますか?
  4. その他、特記すべき事項があれば教えてください。

このライブラリのまともなドキュメントを見つけることができず、ソースコードも少しも理解することができませんでした。どんな助けでも大いに結構です。

どのように解決するのですか?

minifiedされたコードを読もうとするのではなく、以下を参照してください。 npmからリンクされているホームページ (そして、私の google のトップヒットの一つにもなっています) これらは両方とも githubのコード のようにきれいにフォーマットされ、コメントされています。現在のコードは暗号化だけでなく、RSA署名、鍵の生成、OpenSSL互換のPEMファイルの読み書きをサポートしています。のRSAコアは https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rsa.ts これらは PKCS1 v1.5 のスキームで、現在は RSASSA-PKCS1-v1_5 (RSASSA = RSA Signature Scheme with Appendix) と RSAES-PKCS1-v1_5 (RSAES = RSA Encryption Scheme) と改名されています。 PKCS1 v2 . 旧PKCS1のタイプ1は決定論的であり、タイプ2は以下を使用してランダム化されます。 https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rng.ts というように、自分で判断することができます。