問題タブ [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.
c# - DES暗号化データをJavaから.Netに復号化する
DESアルゴリズムを使用してJavaで暗号化された暗号化された文字列を復号化する際に問題が発生しました。私の主な問題は、JavaコードにsaltまたはIVの仕様が表示されないことだと思います。
私は次の情報を持っています:このHexSequenceは私が解読しなければならない暗号化されたデータです:9465E19A6B9060D75C3F7256ED1F4D21EDC18BB185304B92061308A32725BE760F1847E3B19C1D3548F61165EA2E785E48F61165EA2E78
アルゴリズム:DES、パディング:DES / ECB / NoPadding、キー:TESTKEY123
復号化後、次のようになります:550000000018h000000273Al2011112214340600000000000000000000000000
データの暗号化に使用されるJavaコードは次のようになります。
次の.netコードを使用してデータを復号化しようとしました。
奇妙なのはその行です:
データの長さは55バイトですが、56バイトにする必要があります。配列のandに0バイトを追加しますが、これを行わないと、cryptostreamは、復号化するデータが短すぎるというエラーをスローします。
この方法で試してみると、出力としてガベージしか取得できません。Javaコードが使用しているソルトとIVがわからないため、空のソルトとIVを使用しています。わからないデフォルト値はありますか?
編集:hexCodeからバイトを取得するJavaコード:
Javaは符号付きバイトを使用し、.Netはそのすべての機能に符号なしバイトを使用しているように見えます。これはおそらく問題ですか?
c# - C# と SymmetricAlgorithm による非常に単純な暗号化
非常に単純な暗号化/復号化方法を探しています。常に同じ静的キーを使用します。私はこのアプローチのリスクを認識しています。現在、私は次のコードを使用していますが、同じ文字列を暗号化および復号化した後、同じ結果を生成しません (文字列の途中にゴミがあります)。
必要なものは何でも変更できますが、制限はありません(ただし、変数を共有せずに暗号化する方法と別の方法で復号化する方法が必要です)。
ありがとう。
python - 脆弱な鍵による総当り DES
私は暗号化のコースを受講していますが、課題が残っています。手順は次のとおりです。
平文のplain6.txtはDESでencrypt6.datに暗号化されており、8文字の文字列(64ビットのうち8番目のビットはすべて無視されます)として与えられた64ビットの鍵を使用します。すべての文字は文字(小文字または大文字)です。大文字と小文字) と数字 (0 ~ 9)。
課題を完了するには、2 月 12 日 23.59 までに暗号鍵を送ってください。
注: 8 バイト (64 ビット) のキーを取得する予定です。各バイトは、DES で使用されない最下位ビットを除いて、キーの対応するバイトと一致する必要があります。
Python での最初の試みのコードは次のとおりです。
私は 60.000 試行/秒の速度を得ています。62 文字を超える 8 バイトのパスワードは 13 兆通りの可能性を提供します。つまり、この速度では、解決するのに 130 年かかることになります。これは効率的な実装ではなく、C のような高速な言語やそのフレーバーで高速化できることはわかっていますが、それらでプログラミングしたことはありません。速度が 10 倍になったとしても、1 秒あたり 10,000,000,000 時間の範囲に入るには、まだ大きな飛躍があります。
私は何が欠けていますか?これは弱いキーであるはずです:)。まあ、完全な 256 文字セットよりも弱いです。
編集
割り当てに関するいくつかのあいまいさのため、ここに完全な説明とキャリブレーション用のいくつかのテスト ファイルがあります: http://users.abo.fi/ipetre/crypto/assignment6.html
編集2
これは、i7 2600K でコアあたり約 2.000.000 パスワード/秒を取得する大雑把な C 実装です。パスワードの最初の文字を指定する必要があり、異なるコア/コンピューターで複数のインスタンスを手動で実行できます。これを使用して、4台のコンピューターで数時間以内に問題を解決できました。
c - DES - ビット順列と逆順
私は現在、暗号化スキーム DES を実装しようとしていますが、早い段階で問題に遭遇しました。プログラムでビット単位の操作を行ったのはこれが初めてで、C もあまり習熟していません。順列とその逆を適用すると、結果は入力と同じではありません。
私がやろうとしているのは、64 ビットのブロックに初期順列と逆順列を適用することです。配列入力で暗号化したい 64 ビットのブロックがあります。順列テーブル IP によると、最初のバイトの最初のビットを取得し、順列のビット 58 として配置します。ビット 2 はビット 50 などに送信されます。順列の後、結果は半分に分割され、側面が交換されます。これにより、同じアルゴリズムを使用して元に戻すことができますが、IPinverse テーブルが使用されます。
}
c# - データを暗号化してMACを生成する
この質問が建設的ではないとして閉じられないことを願っています。私はこれを解決するために壁に頭をぶつけてきましたが、まだどこにも行きません。ですから、これが私の最後の希望です。
質問は基本的にISO8583-Rev93メッセージのMACフィールドを生成することです。
有効なメッセージのダンプがいくつかあり、正しいMACを生成しようとしています。
- 暗号化アルゴリズムは
DES
、、Mode=CBC
IV = new byte[] {0, 0, 0, 0, 0, 0, 0, 0}
- 暗号化キーは次のとおりです。
new byte[] { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 }
- 暗号化するデータは(メッセージ)(208バイト長)です:
- データを暗号化して(おそらく結果を16進数に変換した後)
BF327C0CED48F26B
、メッセージの128番目のフィールドに入力される有効な値を取得する必要があります。
これが私が試したことです(他の多くの実装とともに):
要するに、変数BF327C0CED48F26B
を暗号化することでどのように達成できますか?dataToEncrypt
助けていただければ幸いです。
更新:助けになる可能性がある場合のメッセージの詳細は次のとおりです。
更新2:0
ええと、それらの馬鹿は、フィールド128に入力してから、暗号化のために送信する
必要があることをドキュメントで言及するのを忘れていました。試してみて失敗してこれを見つけてください!
c# - CryptoStream: 復号化するデータの長さが無効です。同じコードは同じデータに対してエラーを生成しません
わかりました、これは奇妙です、私にとって。私はこのコードを持っています。
これにより、復号化されたデータがファイルに書き込まれます。
次に、 a に書き込む(および返す)ことを除いて、まったく同じことを行う次のコードがありますMemoryStream
。
行currBytes = cs.Read(buffer, 0, buffer.Length)
で「復号化するデータの長さが無効です」というエラーが表示されますが、最初ではなく2番目のセットでのみ発生します。「ICryptoTransform
デクリプター」は一般的な方法で作成されており、同じキーを使用していることはわかっています。
最初のインスタンスではこのエラーが発生しないのに、2 番目のインスタンスではエラーが発生する理由と、(さらに重要なことに) 修正方法を教えてください。
そして、はい、DES がこれまでで最高の暗号化方式ではないことはわかっています。これは、実稼働環境で日の目を見ることのない概念実証の性質のものです。
vb.net - VB.Net DES暗号化機能、Triple DESへ
これは私が現在 DES 暗号化のために持っているものですが、私は VB.Net にかなり慣れていないので、DES ではなくトリプル DES を使用する方法を理解できます。
c# - C#のPBEwithMD5andDES
このコードを使用してテキストの入力と出力を指定するにはどうすればよいですか?ファイルを開いてその内容を読み取り(その方法を知っています)、このコードを使用して復号化する必要があります。
cipherTextは暗号化されたテキストであり、clearBytesは暗号化されていないバイトですが、入力と出力にC#形式のtextBoxを使用する必要があります。
textBox1.Text(入力)->バイト-> ^ above^文字列->バイト->textBox2.Text(出力)入力が暗号化されたテキストであり、出力が復号化されている限り、何でも機能します。文章。