ホームページ > バックエンド開発 > Golang > AES暗号化機能をnode.jsに移植

AES暗号化機能をnode.jsに移植

PHPz
リリース: 2024-02-12 13:57:13
転載
606 人が閲覧しました

将 AES 加密功能移植到 node.js

質問内容

goプログラム(https://github.com/mckael/samtv)をnode.jsに移植しようとしています。 「smartview」API は Samsung TV を制御します

プログラムには「aes 暗号化」機能があり、ノードに移植する際に問題があります。

リーリー

私が現在直面している問題は、どのアルゴリズムを使用すればよいか、または「初期ベクトル」の取得元を node.js 関数のどこに指定する必要があるかがわからないことです。 リーリー

代わりに

crypto.createcipher(...) を使用できますか?しかし、それは非推奨になっており、パディング機能が重要であるように感じられます。

私は暗号化について何も知りません。 ヒントは大歓迎です。

注: go 関数では、

s.sessionkey は、node.jsSolution

session_key = "59e8ca4b09f2a19ab5421cf55d604c7c"

と同じ値になります。 ##go コードは、ecb モードで aes を適用し、pkcs#7 パディングを使用します。 aes バリアント

暗黙的

キー サイズから派生します (例: 16 バイト キーの場合は aes-128)。暗号文は []byte として返されます。 nodejs コードでは、aes バリアントとモードが明示的に指定されています (

aes-128-ecb

など)。 ecb モードは IV を適用しないため、createcipheriv()null として指定する必要があります。パディング pkcs#7 (デフォルト) を使用します。暗号文は、[]byte に最も近い buffer として返されます。 公開されたキー

59e8ca4b09f2a19ab5421cf55d604c7c

は 16 進数でエンコードされたキーのように見えます。16 進数でデコードされた 16 バイトの大きさであるため、aes-128 に対応します。 16 進デコードは、encoding/hex パッケージを使用して Go で実装できます。たとえば、hex.decodestring("59e8ca4b09f2a19ab5421cf55d604c7c") です。 ecb モードで aes-128 (16 バイト キー) と pkcs#7 パディングを使用した Nodejs コード例:

リーリー

go コードは、同じキー (16 進デコード) と平文と暗号文の Base64 エンコードを使用して同じ結果を返します。

完全を期すために、キーを utf-8 でエンコードしてから、

key := []byte("59e8ca4b09f2a19ab5421cf55d604c7c")

および ## のような 32 バイトのキーを生成することもできます。 code #const session_key =buffer.from("59e8ca4b09f2a19ab5421cf55d604c7c", "utf-8") nodejs コード。 nodejs コードでは、aes-256-ecb も適用する必要があります。最終的に、キー仕様は、使用するエンコーディングに関する情報を提供する必要があります。 ecb モードは安全ではないことに注意してください。現在では、gcm モードなどで認証された暗号化を使用するのが一般的です。

以上がAES暗号化機能をnode.jsに移植の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート