問題タブ [des]
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.
java - ISO9797パディング方法2とJavaでのMAC生成
皆さんの何人かがこの問題について私を助けてくれることを願っています。
SmartCardShellプログラムを使用して、英国のe-Passportからデータを抽出するjavascriptコードを実行しました。
私は自分の論文のためにJavaでコードを複製しようとしています。しかし、私はMACの生成に困惑しています。
データ暗号化とMAC生成のJavaScriptコードは次のとおりです。
暗号化キー(Kenc)が正しく生成されていることを正しく確認できました。
スクリプトコードから離れると、MACキー(Kmac)もトリプルDESキーであり、次の方法で実行されます。
上記のように、javascriptコードは、Kmacキー(DES_MAC_EMVメカニズム)を使用してデータに「署名」し、暗号化データをISO9797パディング方法2でパディングします。これは「ビットパディング」と呼ばれます。
DES_MAC_EMVメカニズムとISO9797パディングメソッド2に相当するJavaを作成/説明するのを手伝ってくれる人はいますか?
ヘルプに感謝します
付け加えるのを忘れたので、e-Passportに接続してデータを抽出するシステムを作成しています。その瞬間、SmartCardShellプログラム/javascriptコードから取得したデータを確認しています。これはjavacardアプレット/アプリケーションではなく、Javaの「ホスト」アプリケーションのみです。
HSK
c# - トリプル DES 暗号化
私がここで抱えている問題は、キーのサイズにあることに注意してください。最初に、以下のコードに含まれるコメントに基づいて、キーは 24 バイト (192 ビット) である必要があると考えました。これは機能しなかったので、16、32、および 8 バイトのキーを試してみましたが、何も機能していないようです。「機能しない」とは、テキストが暗号化および復号化された後、元のテキストと同じ値を保持しないことを意味します。
例:
原文: 'Example test this should work '
暗号化されたテキスト: ¸¹pÕô6
復号化されたテキスト: 'Example '
これが私が使用している2つの機能です(暗号化/復号化機能)。また、各関数を呼び出す方法も含めます。
助けてくれてありがとう、
エヴァン
java - Java での DES 実装: キー生成フェーズでのエラー
私は、DES の実装というミニ プロジェクトを行っている学生です。私は以前、64 ビット キーを 56 ビット キーに変換することについて疑問を持っていましたが、ここで受け取ったガイダンスのおかげで成功することができました。
実装を鍵生成フェーズ (16 ラウンドごとに新しい鍵を生成する) と暗号化フェーズに分けました。
ただし、正しいキーを生成できません。「abcdefgh」をキーとして手動で例を作成しましたが、プログラムで結果を再現できません。
DES 鍵生成フェーズには、次のものが含まれます。
56 ビット キーを 2 つの 28 ビット キーに分割します。28 ビットを 4 バイトに
leftkey28[4](最後の 4 ビットが 0rightkey28[4]である) & (最初の 4 ビットが 0 である) として保存します。これらの 28 ビット グループは、(元のアルゴリズムでは << 1 & << 2 を使用して左循環シフトされ、結合されて新しい 56 ビット キーが取得されます)。しかし、この問題のために、私は今のところ 2 の左シフトを破棄し、1 の循環シフトだけを残しています。それでも、この問題の根源は追跡できません。
問題はRound#2 Byte#2私の出力の行にあるようです。
根本的な原因を見つけるためのガイダンスやヒントに感謝します。(PS私はこれまでビット操作をしたことがありません!他のことをする前にそれを機能させたかっただけなので、コードは最適化されておらず、Javaの規則/規則に従って書かれていません)
前もって感謝します。
php - PHPでのDES暗号化
Drupal支払い方法モジュールをコーディングしています。この中で、銀行に送信するハッシュを生成する必要があります。Bankから、特定の文字列をDES/ECBハッシュにコーディングするように求められました。それらはテスト環境も提供し、ここに私の問題があります。文字列B7DC02D5D6F2689Eとキー7465737465703031を使用して、結果ハッシュ3627C7356B25922Bを取得する必要があります(もちろん、bin2hexの後)。これは銀行のテストページによるものであり、私はこのページでもこれを確認しました:http: //www.riscure.com/tech-corner/online-crypto-tools/des.html(暗号化Javaアプレット)。
私の問題は、私が何をしても、正しい結果を提供するためにPHPコードを取得できないことです。これは私が使おうとしている単純な関数です:
そして私もこのようなsthを試みてきました:
これらのどれも正しい署名を与えませんでした。何が問題なのか分かりますか?今のところ私はこの問題に3時間以上取り組んでいるので、助けていただければ幸いです。私はこの暗号化についてはあまり詳しくありません。どうもありがとう。
ところで:上記の$hashと$keyは、コードスニペットの先頭にあるstrtoupper、substr、bin2hex関数の後にあります。
c - C: DES Encryption problem
I was looking for examples how to encode stuff in C using DES cypher and openssl headers and I found this one: http://www.codealias.info/technotes/des_encryption_using_openssl_a_simple_example
The code is almost perfect but I'm not so expert in this stuff and my C knowledge in C is not so big since I use it on PIC and AVR micro controllers...
Anyway in the code:
As you can see, sizeof(clear) is used as the size of the string... the problem is that on the example we know the size of the text string... but when I'm sending this text over the network the other computer don't know it...
How can solve this issue... I don't understand so well why I need to have the size of the original string to decrypt :S
Thanks!!
c - DES 鍵のパリティーを確認するにはどうすればよいですか?
私は、Cryptography クラスで DES (Data Encryption Standard) アルゴリズムに取り組んでいます。その一環として、DES キーのパリティをチェックする関数を含む C コードを作成する必要があります。
これどうやってするの?
cryptography - libgcrypt->libgpg-error からの「弱い暗号化キー」警告を一時停止
libgcrypt で暗号化を行っているときに弱いキーを使用していますが、「弱い暗号化キー」として libgpg-error から stderr に適切な警告が表示されます。問題は、std:err を GUI に読み込んでいることです。ここでは、それらを表示したくありません (それらが多すぎるためです)。GUIでstderr入力をフィルタリングできますが、よりインテリジェントな方法で警告を抑制することが望ましい方法です。残念ながら、これを達成する方法はわかりません。libgcrypt のドキュメントを読んでいるときに、セキュア メモリの警告のみを一時停止できることがわかりました。libgpg-error ソースコードを読んでも、役に立つものは何も見つかりませんでした。
アドバイスをいただければ幸いです。
前もって感謝します。1月
.net - C# での DES 暗号化
DES アルゴリズムを使用して byte[16] 変数を暗号化する正しい方法を見つけようとしています。シナリオは次のとおりです。
- データは 8 バイトの部分で暗号化する必要があります。暗号化のキーは次のとおりです。
byte[] {11, 11, 11, 11, 11, 11, 11, 11} Instance Vector = new byte[8]最初の 8 バイトは(値が 0 の 8 バイト) を使用して暗号化されます。- 暗号化された結果は、次の 8 バイトの IV になります。(これはCBCですか?)
- その最後の 8 バイトは、送信する必要がある結果です。
この情報を使用してEncrypt、次のようにメソッドを 実装しました。
これは、DES 暗号化を使用してデータを暗号化する正しい方法ですか?
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 に到達するために何をすべきかを知る方法はありますか? 私は何か間違ったことをしていますか?