cbc暗号解読

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ミラー

cbc暗号解読

#1

投稿記事 by ミラー » 9年前

C言語を勉強中の者です。大変図々しいと承知の上で質問させて頂きます。以下はシーザー暗号で平文を暗号化した物なのですが(CBCモード使用)どなたかこれを解読するプログラムを作って頂けない でしょうか?
よろしくお願い致します。
<初期化ベクトルの値>
161
<暗号化した結果 (16進数の列)>
0x6f, 0xbb, 0x87, 0x91, 0x90, 0x93, 0x6d, 0xbe, 0x81, 0x9d, 0xad, 0x75, 0x0
<暗号文の長さ (ヌル文字を含めた文字数)13

鍵、平文は分かりません。平文に含まれるのは、英単語のみです。

長々と申し訳ございませんでした。

どうかよろしくお願いします。

ミラー

Re: cbc暗号解読

#2

投稿記事 by ミラー » 9年前

質問させて頂いたミラーです。記述忘れがあったので追記させて頂きます。
自分は、シーザーが文字をずらして暗号化する事、ファイルに書き込む事、ファイルに関する命令を調べました。ですがどんなに考えても分からず、提出期限が近づいてしまった為、質問させて頂きました。どうかよろしくお願いします。
※平文はASCIIコードによる英単語です。

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: cbc暗号解読

#3

投稿記事 by h2so5 » 9年前

256通りしか鍵がないので総当たりするだけですよ。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: cbc暗号解読

#4

投稿記事 by みけCAT » 9年前

ここでの「英単語」とはなんですか?
1文字以上の英大文字または小文字のみからなる文字列全てですか?
それとも、「普通」の英語辞書に載っている単語ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: cbc暗号解読

#5

投稿記事 by みけCAT » 9年前

ミラー さんが書きました:自分は、シーザーが文字をずらして暗号化する事、ファイルに書き込む事、ファイルに関する命令を調べました。
CBCモードはわかっていますか?
http://www.triplefalcon.com/Lexicon/Enc ... Mode-1.htm
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: cbc暗号解読

#6

投稿記事 by みけCAT » 9年前

プログラムを作りました。
せっかくなので、同じCBCモードのシーザー暗号で暗号化したものを掲載します。
初期化ベクトルは181です。
最後のヌル文字は省略しています。
平文は、ASCII印字可能文字および改行コードのみを含んでいます。

コード:

75 fb 74 f6 79 eb 6e ea a9 74 e6 71 f4 7c f2 bb
b2 6b 40 29 e5 ae 83 b2 bd b7 b5 a5 9f 9e d6 97
c6 92 c5 c4 86 d3 89 d8 8b cd 88 87 ce 8a d1 d0
93 d1 84 c4 c3 84 d5 99 d3 d2 80 d3 91 de 99 d7
84 bf 7e f6 77 e6 72 e5 aa 7f eb 69 e3 72 fd 77
2c 05 12 53 52 0f 4c 4b 52 44 43 59 47 46 5e 4d
4c 54 46 45 52 15 14 55 0f 0e 15 03 02 1a 5d 5c
1c 57 56 40 54 3d 16 25 28 2c 2c 3e 3a f9 69 f8
7c fe 76 ef 75 34 3c 31 37 22 2a 2a 25 e4 71 f3
6f fa 74 e5 a4 a1 b2 bc b0 6f eb 63 ed 5f 1d 52
15 14 57 1d 52 16 17 fc b5 79 52 37 f7 bc 7b ee
65 df de 92 d2 89 bf b1 a3 ad 6c df 99 d6 90 c3
8a 89 c5 82 81 d4 9b dd dc 90 d4 86 d4 94 d2 96
95 9e 90 79 39 3c 38 3d 33 3c 38 f7 9a be cf 67
12 39 45 e7 85 bc 7b 29 f8 a9 7c 2b fa a9 82 67
ed 62 f5 b4 b8 b8 b0 bd 74 fc 71 e4 a3 a1 b2 b4
b6 79 f9 70 f0 61 2a e9 67 f4 72 e3 97 a9 5f 5e
04 ed ac 6b f7 62 e2 75 fb 77 36 22 2b 37 3d 39
36 32 35 f4 76 fd 7b e8 a7 a9 ab b7 a3 a1 a5 9f
a3 ce 6a 03 23 56 fd 81 ab c9 70 0c 16 fb ba 79
e9 7c fc 67 ed 6d 2c 38 35 25 2b 2b 24 20 23 e2
60 e7 65 f6 b5 b0 b4 b6 b8 bb bd b8 c6 8a ce 9c
ce 8e c8 8c b6 d9 7b 14 32 45 ec 92 be de 65 17
0b e0 9f 9e d6 97 c2 c1 87 c8 80 d3 99 d7 9a a4
b1 b3 af ba b4 a5 64 38 f7 a6 7c 55 54 53 19 56
01 00 51 13 51 14 2a 25 1f 50 16 41 08 07 19 18
07 1b f0 af 6e e6 67 f2 b1 a2 a6 a6 a1 dd 9e ca
8b cc 88 d9 c1 aa 69 28 20 2d 38 f7 7b fd 63 37
1c 1b 1a 52 13 12 19 57 04 42 00 ff bd 5f 5e 4b
4a 15 48 47 13 3f 3b 39 36 2f e6 66 f3 73 e4 9e
8e b2 7d 3c fd b7 b2 6f 22 e1 a6 ae 9f d5 80 c8
88 c3 7b ec 68 ea 7d f1 62 2a ea b6 66 25 38 23
08 07 06 05 04 4c 01 47 12 5a 1a 55 e9 7e fa 78
eb 63 f0 af 72 31 e0 9f c2 9d 9c 8d 97 81 80 9b
9a d2 9b d1 84 cc 8c bf bf a8 ac ae b9 b5 a6 6e
2d 35 1e 1d 1c 1b 1a 5b 0a 57 1d 52 05 42 49 19
4c 07 41 12 3f f2 b1 72 06 54 14 52 16 0b 0a 0e
5c 5b 46 0e 3f 35 20 28 28 23 e2 73 f5 75 e0 6e
fb a4 d7 98 99 94 93 d1 82 c4 91 a9 78 04 0c 16
fb ba 79 38 f7 70 df 8c c4 89 dc 99 90 c2 95 d0
94 c5 96 99 98 99 cf 80 c8 9b d1 8f c2 c1 96 d2
90 c3 8b d8 d7 99 cb 97 c2 c1 82 c6 c5 83 cc cb
81 ce 99 db 9b dd 8e 8d ce 8a dd 89 cb 8d c2 c1
d0 cf 8d c2 85 84 95 7f 29 e6 99 d6 d3 d9 c1 aa
69 28 e7 a6 b3 b5 a0 b4 a5 aa 69 37 eb c0 bf 7e
e2 c7 c6 c5 c9 c2 c1 92 d6 96 d1 d0 83 ca 8e 8d
c3 8c db 8d d8 d7 dc d2 b7 76 35 21 28 20 2b 2d
ec a3 b0 b4 b4 af cf 82 c6 87 bf aa a1 60 3b fa
95 af c0 66 11 38 46 ea 8a b1 70 35 f2 b1 a1 a1
9f d0 95 9c 9d 97 ce cb c6 c5 c2 8f c9 87 c2 7c
fd 67 e0 65 df 8c 84 83 9d 7f 3e ee a6 65 fd d6
d5 d4 d3 d2 9e da 88 da 9a dc 98 a2 af a9 a7 a2
dc 8f c9 86 c0 93 da d0 da 66 25 f7 b6 a3 a5 a3
a6 d8 99 cb 8c c9 8b d8 c2 a7 66 25 37 1c 1b 1a
14 1d 1c 47 14 4c 4b 09 44 07 06 4c 08 50 02 01
0a 04 ed ac 6b ec 62 ef ae 65 ed 67 fd bc 60 1f
0e 14 13 57 11 47 46 59 58 49 5b 4c 56 55 1d 57
0d 05 0d 03 02 58 31 f0 af 6e 2d 23 2c 37 f6 65
f6 72 e3 69 e5 6f fb 83 cd 87 d3 7f fd 79 fb ba
66 25 2b 24 2c 37 3d 3b 36 48 1d 57 13 46 08 59
41 2a e9 a8 67 26 2e 1f 4a 49 09 47 08 36 33 35
49 1e 5e 11 57 12 11 0b 0a 1a 00 e9 a8 67 26 e5
6b e4 6f 2e 26 fc d5 d4 d3 d2 d1 96 d8 89 88 7f
f5 b4 68 27 f6 ac 6b e1 a0 7b 3a 27 21 1f 5a e4
67 e1 6e e8 7b f2 a8 67 ed a5 6d 23 e2 78 51 50
4f 4e 4d 4c 4b 0e 4a 08 46 01 43 06 38 34 30 22
30 30 36 32 48 00 3c fb a5 64 2b e2 6e ea 78 ea
6a ec 68 12 5a e6 a5 6d 2c fd a7 70 2f e1 a0 aa
ae b6 7e 3d f7 b6 63 35 e2 aa 69 16 15 44 15 4f
18 50 1e 4a 18 26 2a 2e 3c 2e 2e 28 2c f6 db da
d9 d8 d7 d6 d5 84 d5 8f d8 90 de 8a d8 66 ea 6e
fc 6e ee 68 ec ab 75 34 38 3c 2e 3c 3c 3a 3e 44
0c 30 ea bf 7e 3d fc bb 7a 39 2f 28 df 9a de 9c
d2 95 cf 8a b4 b8 bc ae bc bc ba be c4 8c b0 6f
2d ef ae 68 13 40 46 45 42 43 42 05 3f 3b 33 36
32 35 49 03 45 15 45 03 43 05 3d 33 4d 4c 4c 50
4f 47 fa 73 33 f2 b3 74 5d 5c 5b 5a 59 58 57 12
56 14 5a 1d 57 12 2c 20 24 36 24 24 22 26 5c 14
28 e7 a5 77 36 f0 8b de d8 d7 d0 d5 d4 db 9e da
98 d6 91 d3 96 a8 a4 a0 b2 a0 a0 a6 a2 d8 90 ac
6b 36 f5 a4 bb 68 37 f6 69 f4 b3 62 f9 ad a7 66
39 f8 7b fd 7d f1 74 f0 73 0b 45 ff 6b f7 75 f1
73 07 4d ef a5 6b 2a 30 19 18 17 16 15 14 13 12
11 1d 16 15 5a 14 59 53 f1 81 a1 c7 6d 2c 2e 25
23 30 30 32 25 1f 4c 4b 0e 4a 1d 57 13 46 02 45
44 4d 41 2a e9 a8 67 26 e5 a4 63 22 20 20 2d 51
12 56 e8 7d fb 76 fe 79 38 e4 a3 72 28 01 00 ff
be 7d 3c fb 65 4e 4d 4c 4b 4a 16 fb ba 79 38 f7
7d fa b9 70 f2 72 fb 83 c0 84 ba ab a9 a4 ac a7
6d 2c 36 1b 1a 19 18 17 16 15 19 12 11 5d 07 52
01 53 06 05 40 04 46 08 4b 0d 48 47 14 58 1c 4e
1c 5c 1a 5e 5d 56 58 31 f0 af 6e 2d ec ab ba a7
ad a2 b5 b2 79 3a f6 ba 76 3a f6 ba 76 3a f6 ba
79 f1 73 e9 a8 74 33 f5 70 0b 44 45 48 47 0b 4d
13 19 01 ea a9 68 27 e6 a5 64 e1 6d fe bd 74 fc
bb 65 24 f3 a7 66 ee ad 70 2f 3c 38 38 3b 43 0e
4a 03 43 16 5d 45 44 0c 06 0c 04 03 52 06 51 11
58 18 49 40 03 45 05 49 0c 48 0b 33 3d 37 23 2f
2d 29 2b 4f 05 37 fd a5 8e 8d 8c 8b 8a 89 88 d7
81 d4 96 dd 9b c8 bf 77 0a 43 43 49 51 3a f9 b8
77 36 2a ff be 7d df b4 73 32 1f 59 0c 58 09 46
45 54 4e 23 3d 16 
【追記】一応、最初に提示されたフォーマットに合わせたデータも置いておきます。
► スポイラーを表示
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ミラー

Re: cbc暗号解読

#7

投稿記事 by ミラー » 9年前

質問させていただいたミラーです。
英単語は辞書に載っている普通の英単語です。

よろしくお願いします。

アバター
usao
記事: 1889
登録日時: 11年前

Re: cbc暗号解読

#8

投稿記事 by usao » 9年前

何やらブロック単位で処理するらしいのですが
そのブロック長がいくつなの?っていう情報は要らないのでしょうか?
(特に断りがない場合は何バイトということにする,みたいな慣例というか決まりみたいなことがあるのかな?)

とりあえず 1ブロック=1byte ということにしてやってみたけど
アルファベットだけの文字列ってのが一個も出てこないです><

やってみた結果:(表示できる文字だけで構成された結果だけ)

コード:

[81] : accept-block$
[82] : `bbdsu,}mnbj'
(左側の[81]とかいうのは鍵の値です. : の右側が復号結果.)


[追記]
コードわすれてた.

コード:

typedef std::vector< unsigned char > Bytes; //バイト列

//シーザー暗号(CBCモードとやらで,ブロック長1byte)の復号可処理
void CaesarCipher_CBC_Decryption(
    const Bytes &CipherBytes,   //暗号文
    unsigned char InitVec,  //CBCの Init vector とかいうやつ
    unsigned char key,  //暗号の鍵(暗号化時に値をずらす量)
    Bytes &rDst //結果受取
    )
{
    int N = (int)CipherBytes.size();
    rDst.resize( N );

    for( int i=N-1; i>=0; i-- )
    {
        //unsigned int v = (unsigned int)CipherBytes[i] + key;
        //if( v >= 256 )v-=256;
        //rDst[i] = (unsigned char)v ^ ( i>0 ? CipherBytes[i-1] : InitVec );

        rDst[i] = (CipherBytes[i] + key) ^ ( i>0 ? CipherBytes[i-1] : InitVec );
    }
}
[コード修正]なんでわざわざunsigned intだよ,恥ずかしい…

ミラー

Re: cbc暗号解読

#9

投稿記事 by ミラー » 9年前

質問させていただいたミラーです。

おかげさまで何とか提出することができました。教えていただいたコードを勉強してC言語の力を高めていきます。

大変ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る