問題タブ [cbc-mac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - ISO 9797-1 アルゴリズム 1 [CBC-MAC] in C#
CBC-MAC アルゴリズムには 6 つのバリエーションがあるようです。私は PINPad 1000SE の MAC アルゴリズムを一致させようとしてきました [マニュアルでは ISO 9797-1 Algorithm 1 です]。
ここから素晴らしいスタートを切りました。
そして、アルゴリズムを次のようにコーディングしました。
その後、3 つのパディング スキームがあり、最初に使用したスキームが必ずしも正しいとは限らないことを発見しました。マニュアルは再び私の救助に来ました。デバイスは 0 だけをパディングしているようです。追加のブロックもどこにも言及されていないため、以下の変更を加えました。
追加のブロックなし (mod 0 [8 で割り切れる] の場合、配列の長さは変更されません)
元の提案では、2 番目のステップで復号化する必要がありました... しかし、Valeryはここで、すべて暗号化することを提案しています。そこで、復号化を暗号化に変更しました。しかし、まだ必要なMACを取得できません...
マニュアルには、キー「6AC292FAA1315B4D8234B3A3D7D5933A」が記載されています[キーは16バイトである必要があるため、ここのキーは16進文字列であると判断したため、6A、C2、92、FAのバイト値を取得しました...新しいバイト[] {106、194、146、 ...] メッセージが [0x1a + MENTERODOMETER のバイト配列] の場合、MAC は 7B,40,BA,95 [4 バイト] である必要があります。
誰か助けてくれませんか?お願いします?
Pinpad では、メッセージの最初の文字が 0x1a である必要があるため...
この入力で上記のコードを呼び出しています。
cryptography - 暗号化と HMAC に 1 つのキーを使用する
2 つのクライアント間で確立された共有秘密鍵を HMAC キーとしても使用できるかどうか疑問に思っています。
CBC-MAC として使用すると問題があることがわかりましたが、HMAC の悪い習慣であるという証拠は見つかりませんでした。
ありがとう、ウラジミール
c# - DES を使用して CBC-MAC を実装するにはどうすればよいですか?
暗号化アルゴリズムに関する情報を使用して、C# で MAC-CBC 生成メソッドを実装する必要があります。ここに私が持っているものがあります:
- DES を使用する必要があります。
- 鍵は
byte[] {11, 11, 11, 11, 11, 11, 11, 11}
- データ (16 バイト) は、8 バイトの部分で暗号化する必要があります。
Instance Vector = new byte[8]
最初の 8 バイトは(値が 0 の 8 バイト) を使用して暗号化されます。(CBC?) - 暗号化された値の最後の 8 バイトを 16 進文字列に変換する必要があります。これは私が送信する必要がある結果です。
この情報を使用して、次の方法を実装しました。
彼らが私に提供したサンプルの生データは次のとおりです。input=byte[] {0, 6, 4, 1, 6, 4, 1, 7, E, E, F, F, F, F, B, B)
これは value: の出力を返すはずですA7CBFB3C730B059C
。これは、暗号化されたデータの最後の 8 バイトが次のようになることを意味しますbyte[] {167, 203, 251, 60, 115, 11, 05, 156}
。
残念ながら、上記の方法を使用すると、次のようになります32D91200D0007632
。つまり、暗号化されたデータが正しくありません。(私のメソッドが生成した暗号化された値の最後の 8 バイトは ですbyte[] {50, 207, 18, 0, 208, 0, 118, 50}
)。
A7CB に到達するために何をすべきかを知る方法はありますか? 私は何か間違ったことをしていますか?
c++ - 行列乗算による暗号化
単純な行列乗算ベースの暗号化に関する大学のプロジェクトに取り組んでいます。
プロジェクトの概要はこのようなものです。
テキスト ファイルから行列に暗号化キーを掛けた行列 = 暗号化されたファイル。
暗号化されたファイルから行列にキー行列の逆数を掛けたもの = 復号化されたファイル。
しかし、もう少し進んで、任意のファイル(テキスト、mp3、gif など)を処理できるようにしたいと考えています。
私はこの問題を解決するために何時間も研究してきましたが、少しイライラし始めています.
私が考えることができる最善の (そして唯一の) 方法は、プログラムが生のバイナリを読み取り、それに対して暗号化を実行することです。
では --> 質問:
ファイルから生のバイナリを抽出し、行列に入れ、行列の乗算を実行し、(本質的に) バイナリをファイルに書き戻すことはできますか?
また、さまざまなコンピューターやプラットフォームでのそのような方法の実行可能性は何ですか? (おそらく、バイナリからintに変換し、復号化時に元に戻すと、変更される可能性があると考えています-異なるコンピューターでの異なるサイズの割り当てなど?)
また、より良い解決策についての意見を歓迎します
---> しかし、基本的なアルゴリズムは行列の乗算に基づいている必要があります。
私のコード:
私が得るエラー:
aes - GCM、CCM、またはCBC-MACモードのAES暗号?
私は素人の言葉でこれらのモードを説明している記事を探していましたが、まだ何も役に立ちませんでした。では、各モードの長所と短所は何ですか?ありがとう
GCM
CCM
CBC-MAC
javascript - CryptoJS で CBC-MAC を使用する
CryptoJS を使用してトリプル DES で CBC-MAC (* HMAC ではない) ブロック暗号を生成するにはどうすればよいですか。ドキュメントでそれを見つけることができないようです。
encryption - CBC-MAC 復号化、MAC が暗号化でどのように機能するか
クレジット カードのトリプル DES 暗号化と復号化を理解しました。CBC-MACを復号化する方法を教えてください...最後のCBC-MACは4バイトのMACを提供します。MAC から暗号化まで、正確にはどのように機能しますか? マックは何をしているの?
CBC-MAC を介して暗号化が行われると、どのように復号化できますか? 私の場合、トリプル DES は機能しません。
ここで別の質問。以下を含む復号化アルゴリズムについて聞いたことがありますか。
- DUKPT
- TDES、および
- MACバリアント(PINバリアントと比較)
私は TDES と DUKPT についてよく理解していますが、MAC バリアントは復号化アルゴリズムでどのような役割を果たしますか?
MACバリアントはPINバリアントとどう違うのですか?
ありがとうございました!