問題タブ [rc4-cipher]

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.

0 投票する
2 に答える
2260 参照

encryption - RC4 UTF-8 ASP クラシックでの暗号化と復号化

これを ASP ページで機能させる方法はありますか? 文字セット windows-1253 で正常に動作していましたが、サイトを UTF-8 に変換する必要があり、唯一の問題は暗号化と復号化です。メンバー登録パスワードを暗号化しましたが、現在は UTF-8 を使用しています。復号化後のパスワードは次のようになります。2��8��6

助けが必要です(私の英語で申し訳ありません)。これはRC4コードです:

0 投票する
1 に答える
968 参照

java - byte[] を UDP 経由で送信すると、byte[] の値が変更されます

UDP を使用してサーバー クライアント通信を行おうとしていますが、RC4 を使用して暗号化されたテキストを相互に送信する必要があります。次のようになります。

  1. ホストを開始します。

  2. クライアントを起動します。

  3. クライアントは RC4 を使用して暗号化されたテキストを送信します

  4. ホストは暗号化されたテキストを受信し、RC4 を使用して復号化します

私の RC4 はオンライン ソースから取得したもので、動作しているようです。クライアント側で(テスト目的で)暗号化と復号化の両方を行う場合、それは機能します。しかし、暗号化されたテキストをホストに送信した後に問題が発生します。ホストがメッセージを復号化すると、出力が期待どおりの出力ではありません。

クライアントでの私のコードの例を次に示します。

上記から、適切に暗号化および復号化できるように見えるため、RC4 が機能していると思います。暗号化されたテキストをホストに送信します

ホスト側では、暗号化されたテキストを受け取ります

これは半分の時間しか発生せず、暗号化されたテキストに?特殊文字が含まれている場合にのみ発生するパターンが見られます。したがって、char を string に変換してから byte に変換し、UDP 経由で送信すると、何か問題が発生したと推測しています。

0 投票する
1 に答える
2636 参照

php - 行ごとのRC4復号化

PHPスクリプトを使用して、最終的に250 mbになる可能性のあるファイルを変換する必要があります。それらは、ファイルの最初の 266 バイトに含まれるキーと説明を使用して、rc4 暗号化で暗号化されます。機能している暗号化機能があり、そのままにしておく必要があります。ここにあります:

そして、私のファイル読み取り/復号化コードは次のとおりです。

以前は、コードはいくつかの小さなファイルを受け入れ、その穴の内容を読み取り、それを rc4 関数に渡すことでそれらを変換していました... コードで大きなファイルを処理する必要があるため、次のように行ごとに実行する必要があります。ライン。

生成されたファイルが破損しています... rc4 暗号化では、解読するために穴「文字列」が必要なためですか? 私は間違ったことをしていますか?

ありがとうございました!

0 投票する
0 に答える
113 参照

java - Android アプリでファイルを再生するための復号化アルゴリズム

Adobe Air/Flex アプリでオーディオ ファイルを復号化するためのコードがあります。

このアルゴリズムを Java for Android アプリケーションで解読する方法を教えてください。コードの例を書いてください。

0 投票する
1 に答える
1149 参照

encryption - RC4 での攻撃方法

友人、私は RC4 アルゴリズムのためにできるだけ多くのキーをクラックする必要があるプロジェクトに取り組んでいます。彼の質問を読む前に、RC4 アルゴリズムを試してみてください。

それぞれ数百万行を含む 50 個の異なるファイル (A00.data、A01.data...A49.data) を指定しました。ファイルの各レコードには 5 つのタプルが含まれます

  1. 初期ベクトル[0]
  2. 初期ベクトル[1]
  3. 初期ベクトル[2]
  4. PRGAアルゴリズムの1バイト目

すべての鍵には 8 バイトが含まれます (3 バイトの初期ベクトル指定 + 5 バイトの秘密鍵)

特定の攻撃 (つまり RC4 ) を適用して、各ファイルの数百万行からキー (5 秘密バイト) を見つけるにはどうすればよいですか?

0 投票する
1 に答える
427 参照

c++ - 間違った出力を与える独自の RC4 アルゴリズム

RC4 アルゴリズムの次の実装を作成しました。ここで、 はOpenSSLライブラリkeyで指定されている RC4_KEY 構造体です。セットキーを含む です。このテストでは、「teste」をキーとして使用しています。ご覧のとおり、さらに 2 つの があり、1 つは元の (入力) データを保持し、もう 1 つは暗号化された (出力) データを保持しています。m_keyQByteArrayQByteArrays

テスト目的で、次のデータ (16 進数) を含むテキスト ファイルを使用しています。

オンライン ツールまたは OpenSSL 関数を使用すると、次の出力が得られます (キー: "teste")。

ただし、独自の実装を使用すると、次のようになります。

私はかなりの時間を費やして、さまざまな疑似コードや実装を調べましたが、どこが間違っていたのかまだわかりません。

0 投票する
1 に答える
150 参照

ssl - HTTPS のアプリケーション層でデータを復号化するには?

HTTPSリクエストを処理するために、Lispを使用してWebサーバーを作成しています。私はTLS 1.2に従っており、すでにハンドシェイク プロセスを完了しています。私が選んだ暗号スイートは TLS_RSA_WITH_RC4_128_SHA です。私はすでにclient_write_MAC_secret、server_write_MAC_secret、client_write_key、server_write_keyを計算しました。これらのキーは正しいと思われます。ブラウザからの「Finished」メッセージを復号化し、内部のデータを検証できるからです。また、レコード層の HMAC も検証します。次に、サーバーから「Change Cipher Spec」と「Finished」を送信します。これまでのところ、すべてがうまく機能しているようです。

次に、ブラウザからのメッセージを受け取りました#(23 3 3 1 61 ...)23アプリケーションデータであることを意味します。#(3 3)TLS 1.2 を意味します。#(1 61)これは、長さが 256+61=317 であることを意味します。これは、残っているデータが実際には 317 バイトの長さであるためです。これが私の質問です。「client_write_key」を使用してこれらの 317 バイトを RC4 で復号化すると#(148 104 81 182 67 111 28 201 202 50 207 57 126 209 19 ...)、テキストに変換できないようなデータが得られました。のようなものを手に入れるべきだと思いGET / HTTP/1.1ました。私は何を間違えますか?

ありがとう。

0 投票する
1 に答える
4700 参照

java - 整数の暗号化 RC4 アルゴリズム

基本的に、 の配列を取る s の RC4アルゴリズムを正常に実装できます。StringByte[]key

clearText を文字列として "24" とすると、暗号テキストの範囲は非常に高く、 > 2000 となります。しかし、私のアルゴリズムでは、範囲を 200 以下に制限する必要があります。

では、 のより良いオプションを使用できますintか?

これは私が Strings でやっていることです:

暗号化モード:

値を確認します。

-より低いint値を取得するために、これらの型に対して何らかのトリックを実行できますか?

復号化:

SSCCE :

0 投票する
0 に答える
903 参照

c++ - C++ の WEP に対する FMS 攻撃

WEPにFMS 攻撃を実装しようとしています。この攻撃は、RC4 sbox の一部が変更されない可能性を利用して、「既知の」sbox 状態を作成し、キーをリバース エンジニアリングすることを理解しています。多くのサンプルでは、​​正しいキー オクテットがノイズよりも頻繁に表示されるはずです。

頻度カウントに追加する値は次のとおりです。

ここに画像の説明を入力

どこで(私は思う;表記は適切に定義されていません)

  • B は 0 から始まります
  • P.out は、出力されたキーストリーム バイトです。
  • SはSボックスです
  • j は、RC4 キー スケジューリング アルゴリズムで使用される「ポインタ」です。

私のコードでは、600 万個のデータ パケットを生成しています。一定のルート キーと一定の平文を使用して一定のヘッダーをシミュレートしRC4(IV + root_key).encrypt(plaintext)、最初の 256 オクテットを破棄せずに で暗号化します)。(IV, encrypted_data)ペアはget_key関数を介して実行されます。

完全に間違ったキーを取得しています。エラーはおそらく 1 回限りのエラーか、そのようなばかげたことだと思いますが、2 人にこれを見てもらうように依頼しましたが、どちらも何が問題なのか理解できませんでした。

露骨に間違っていることはありますか?そうでない場合、それほど明らかに間違っていないのは何ですか?