一般的な侵入テストでは、Web サイトへのログインにパスワードを平文で送信することをリスクとみなします。パスワードの暗号化された送信には、National Secret Algorithm または RSA アルゴリズムを使用することをお勧めします。
RSA暗号化(JS暗号化、C#、Java復号化)については「RSA対称暗号化(JS暗号化、C#、Java復号化)」を参照してください。
この記事では、国家機密 SM2 アルゴリズムの実装について説明します。
1. 動作原理
フロントエンド js は公開キーを使用して暗号化し、バックエンドは秘密キーを使用して復号化します (バックエンドは C# または Java 言語にすることができます)。
2. 導入手順
暗号化と復号の結果の検証を容易にするために、この記事では、固定の公開キーと秘密キーのセットを使用して説明します (公開キーと秘密キーの生成方法については後述します)。
公開キー: 04F59485B23304990ED45E42521BE504D0DE358B9E4031A172EF48700071AF985A8EA8B12BB479E24152814EE61840932BFFF5B3B1657C9CF50A61756B1D901E 1C
秘密鍵:
78AEBAE7DE025B6954357DB327F4AE412B3657B1E1ED36F89927C065155DBA9A
(1) JSフロントエンド暗号化
デモを見てください。コードは Web ページのソース コードを参照しています。
オンラインデモアドレスの暗号化結果は 毎回異なります。
(2) Java SM2暗号化と復号化
ここでは VScode を使用して Java コードをデバッグしています。プログラム全体の構造は次のようになります。
注: Java の暗号化と復号化では、bcprov-jdk16-1.46.jar バージョンのパッケージが使用されます。
(完全なコードについては、記事の最後にあるダウンロード リンクを参照してください)
(3) C# SM2暗号化と復号化
次のようなデバッグ ツールを作成しました。
注: C# の暗号化と復号化には BouncyCastle.Crypto.dll、バージョン: 1.9.0.1 が使用されます。暗号化コードの異なるバージョンは同じではないため、この問題は長い間放置されてきました。
完全なコードのダウンロード:
https://download.csdn.net/download/a497785609/87459516
代替ダウンロード アドレス:
https://qingshanboke.com/uploadfiles/demo/sm2.rar
GitHub アドレス: