国家秘密 SM2 アルゴリズム (JS 暗号化、C#、Java 復号化)

一般的な侵入テストでは、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 アドレス:

https://github.com/zhangqs008/SM2 

おすすめ

転載: blog.csdn.net/a497785609/article/details/129102042