hmac.New(h func() hash.Hash, key byte) JavaScript での hash.Hash と同等
PHP では、データのセキュリティを保護するために暗号化アルゴリズムを使用する必要があることがよくあります。 HMAC (ハッシュベースのメッセージ認証コード) は、データの整合性と ID 認証を検証するために一般的に使用される暗号化アルゴリズムです。 PHP では、hmac.New() 関数を使用して HMAC インスタンスを作成できます。これには、ハッシュ関数とキーを指定する必要があります。同様に、JavaScript では、同等のメソッドを使用して同じ機能を実現できます。この記事では、JavaScript で同等のメソッドを使用して HMAC インスタンスを作成する方法と、PHP と JavaScript の間でデータを暗号化および復号化する方法を説明します。
質問内容
go lang hmac.newのjs実装で数日間行き詰まりそうになりました。しかし、成功はありませんでした。実装には crypto
、crypto-js
、stablelib
モジュールを使用します。問題は、go lang バージョンでは、hmac
インスタンスから hmac
インスタンスを作成できることです。例: (コード ブロックは正しく、テスト済みです):
実のところ、私もそれがどのように機能するのか知りません!すべての JavaScript 関連モジュールでは、hmac
から hmac
を作成できず、ハッシュ アルゴリズムを決定する string
値を受け入れるためです。
JavaScript で hmac
から hmac
を作成する方法を尋ねたほうがよいかもしれません。
解決策は何ですか?
go バージョンの出力が実装の出力と同じである場合、その解決策は正しいです。
回避策
仕様 (rfc 2104) に従って、hmac は sha256 などのダイジェスト関数を内部で使用します。
ただし、実装では、ダイジェストの代わりに別の hmac を内部で使用する hmac が適用されます (実際には互換性がありません)。ここで、最下位レベルの hmac のみが内部で通常のダイジェストを使用します。これにより、入れ子構造が作成されます。
通常の hmac (ダイジェスト付き) の仕様に基づいて、これを go コードで使用される hmac (ダイジェストの代わりに) を使用した hmac に拡張できます。
hmac(k xor opad, hmac(k xor ipad, text))
s. rfc2104、セクション 2。 hmac
仕様との違いにより、このような機能をそのままサポートする JavaScript ライブラリを見つけるのはそれほど簡単ではないかもしれません。
ほとんどのライブラリは確かに hmac をサポートしていますが、nodejs の暗号化モジュールの crypto.createhmac()
などのダイジェスト (hmac ではない) のみを指定できます。 その他の回答 も参照してください。 。このアプローチは、Go コードでロジックを実装するために使用できるとは思いません。
他の回答のアプローチが機能せず、必要な機能を備えた別の JavaScript ライブラリが見つからない場合は、hmac の仕様が比較的単純であるため (上記を参照)、JavaScript でロジックを自分で実装できます。
次のコードは、nodejs の暗号モジュールの実装例です:
リーリー ###結果:### リーリー ###テスト:###次の go コードは同じ結果を生成します:
リーリー ######編集:######この記事
からインスピレーションを得た、よりコンパクト/効率的なhmac_rec()
の実装です。これは、通常の最後の反復ステップに hmac を使用します (これにより、gethash( )### 廃止): ### リーリー
以上がhmac.New(h func() hash.Hash, key byte) JavaScript での hash.Hash と同等の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









2009 年の誕生以来、ビットコインは暗号通貨の世界のリーダーとなり、その価格は大きな変動を経験しました。包括的な歴史的概要を提供するために、この記事では 2009 年から 2025 年までのビットコイン価格データをまとめ、主要な市場イベント、市場センチメントの変化、価格変動に影響を与える重要な要因を取り上げます。

暗号通貨としてのビットコインは、その誕生以来、市場の大きな変動を経験してきました。この記事では、読者がビットコインの価格傾向と重要な瞬間を理解できるように、誕生以来のビットコインの歴史的な価格の概要を提供します。ビットコインの過去の価格データを分析することで、その価値に対する市場の評価やその変動に影響を与える要因を理解し、将来の投資決定の基礎を提供することができます。

2009年の作成以来、ビットコインの価格はいくつかの大きな変動を経験し、2021年11月に69,044.77ドルに上昇し、2018年12月に3,191.22ドルに減少しました。 2024年12月の時点で、最新の価格は100,204ドルを超えています。

リアルタイムのビットコインUSD価格 ビットコインの価格に影響を与える要因 将来のビットコイン価格を予測するための指標 2018年から2024年のビットコインの価格に関する重要な情報を次に示します。

CSSでサイズ変更シンボルをカスタマイズする方法は、背景色で統一されています。毎日の開発では、調整など、ユーザーインターフェイスの詳細をカスタマイズする必要がある状況に遭遇することがよくあります...

はい、H5ページの生産は、HTML、CSS、JavaScriptなどのコアテクノロジーを含むフロントエンド開発のための重要な実装方法です。開発者は、< canvas>の使用など、これらのテクノロジーを巧みに組み合わせることにより、動的で強力なH5ページを構築します。グラフィックを描画するタグまたはJavaScriptを使用して相互作用の動作を制御します。

フレックスレイアウトとソリューションの下でのテキストの過度の省略によるコンテナの開口部の問題が使用されます...

セグメントターの45度の曲線効果を達成する方法は?セグメンテーションデバイスを実装する過程で、左ボタンをクリックすると、適切な境界線を45度の曲線に変える方法とポイント...
