質問編集履歴
9
test
CHANGED
File without changes
|
test
CHANGED
@@ -142,7 +142,7 @@
|
|
142
142
|
|
143
143
|
|
144
144
|
|
145
|
-
for(count=0;count<100
|
145
|
+
for(count=0;count<100;count++){
|
146
146
|
|
147
147
|
for (i = 0; i < 32; i++){
|
148
148
|
|
8
test
CHANGED
File without changes
|
test
CHANGED
@@ -180,7 +180,7 @@
|
|
180
180
|
|
181
181
|
```
|
182
182
|
|
183
|
-
意見をもとに配列の部分をカウントアップをなんとか処理できましたcounter[0]まで左にずらしつついれていくのは大変でまとめる方法やもとに戻る方法はわかりませんでしたが。
|
183
|
+
意見をもとに配列の部分をカウントアップをなんとか処理できましたcounter[0]まで左にずらしつついれていくのは大変でまとめる方法やもとに戻る方法はわかりませんでしたが最低限実行することはできました。
|
184
184
|
|
185
185
|
|
186
186
|
|
7
test
CHANGED
File without changes
|
test
CHANGED
@@ -118,9 +118,7 @@
|
|
118
118
|
|
119
119
|
int i,j,count=0;
|
120
120
|
|
121
|
-
FILE* f
|
121
|
+
FILE* fp1;
|
122
|
-
|
123
|
-
unsigned char hairetu[128]= {0};
|
124
122
|
|
125
123
|
unsigned char counter[32]= {0};
|
126
124
|
|
@@ -128,25 +126,9 @@
|
|
128
126
|
|
129
127
|
|
130
128
|
|
131
|
-
fp1 = fopen("te
|
129
|
+
fp1 = fopen("counter.bin","rb" );
|
132
130
|
|
133
131
|
if( fp1 == NULL ){
|
134
|
-
|
135
|
-
printf( "ファイルオープンに失敗しました。同じフォルダにありません\n" );
|
136
|
-
|
137
|
-
exit( 1 );
|
138
|
-
|
139
|
-
}
|
140
|
-
|
141
|
-
fread( hairetu, sizeof(unsigned char), sizeof(hairetu), fp1 );
|
142
|
-
|
143
|
-
fclose(fp1);
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
fp2 = fopen("counter.bin","rb" );
|
148
|
-
|
149
|
-
if( fp2 == NULL ){
|
150
132
|
|
151
133
|
printf( "ファイルオープンに失敗しました。同じフォルダにありません\n" );
|
152
134
|
|
@@ -154,9 +136,9 @@
|
|
154
136
|
|
155
137
|
}
|
156
138
|
|
157
|
-
fread( counter, sizeof(char), sizeof(counter), fp
|
139
|
+
fread( counter, sizeof(char), sizeof(counter), fp1 );
|
158
140
|
|
159
|
-
fclose(fp
|
141
|
+
fclose(fp1);
|
160
142
|
|
161
143
|
|
162
144
|
|
@@ -200,8 +182,6 @@
|
|
200
182
|
|
201
183
|
意見をもとに配列の部分をカウントアップをなんとか処理できましたcounter[0]まで左にずらしつついれていくのは大変でまとめる方法やもとに戻る方法はわかりませんでしたが。
|
202
184
|
|
203
|
-
配列のサイズ等一部変更しております。
|
204
|
-
|
205
185
|
|
206
186
|
|
207
187
|
|
6
test
CHANGED
File without changes
|
test
CHANGED
@@ -112,8 +112,6 @@
|
|
112
112
|
|
113
113
|
#include <stdlib.h>
|
114
114
|
|
115
|
-
#include<string.h>
|
116
|
-
|
117
115
|
#include"a.h"
|
118
116
|
|
119
117
|
|
@@ -124,11 +122,7 @@
|
|
124
122
|
|
125
123
|
unsigned char hairetu[128]= {0};
|
126
124
|
|
127
|
-
unsigned char counter[32]= {0};
|
125
|
+
unsigned char counter[32]= {0};
|
128
|
-
|
129
|
-
unsigned char henkango[128]= {0};
|
130
|
-
|
131
|
-
|
132
126
|
|
133
127
|
int main(){
|
134
128
|
|
@@ -166,36 +160,6 @@
|
|
166
160
|
|
167
161
|
|
168
162
|
|
169
|
-
fp3 = fopen("henkango.bin","rb" );
|
170
|
-
|
171
|
-
if( fp3 == NULL ){
|
172
|
-
|
173
|
-
printf( "ファイルオープンに失敗しました。同じフォルダにありません\n" );
|
174
|
-
|
175
|
-
exit( 1 );
|
176
|
-
|
177
|
-
}
|
178
|
-
|
179
|
-
fread( henakngo, sizeof(char), sizeof(henkango), fp3 );
|
180
|
-
|
181
|
-
fclose(fp3);
|
182
|
-
|
183
|
-
}
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
puts("");
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
henkan(counter,henkango);
|
192
|
-
|
193
|
-
for (i=0;i<16;i++){
|
194
|
-
|
195
|
-
henkango[i)]^=henkan[i)];
|
196
|
-
|
197
|
-
}
|
198
|
-
|
199
163
|
for(count=0;count<1000;count++){
|
200
164
|
|
201
165
|
for (i = 0; i < 32; i++){
|
@@ -228,23 +192,13 @@
|
|
228
192
|
|
229
193
|
}
|
230
194
|
|
231
|
-
|
195
|
+
|
232
|
-
|
233
|
-
|
196
|
+
|
234
|
-
|
235
|
-
|
197
|
+
|
236
|
-
|
237
|
-
henkango[i+(count+1*16)]^=henkan[i+(count+1*16)];
|
238
|
-
|
239
|
-
}
|
240
|
-
|
241
|
-
}
|
242
198
|
|
243
199
|
```
|
244
200
|
|
245
|
-
意見をもとに配列の部分をカウントアップをなんとか処理できました
|
201
|
+
意見をもとに配列の部分をカウントアップをなんとか処理できましたcounter[0]まで左にずらしつついれていくのは大変でまとめる方法やもとに戻る方法はわかりませんでしたが。
|
246
|
-
|
247
|
-
カウントアップ中に変換する関数を入れてhairetugo配列で出力し配列の次のバイトとXOR(ここでは16バイトと仮定)して繰り返す処理をしています。
|
248
202
|
|
249
203
|
配列のサイズ等一部変更しております。
|
250
204
|
|
5
カウントアップ処理の一部成功したコードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -190,7 +190,11 @@
|
|
190
190
|
|
191
191
|
henkan(counter,henkango);
|
192
192
|
|
193
|
-
|
193
|
+
for (i=0;i<16;i++){
|
194
|
+
|
195
|
+
henkango[i)]^=henkan[i)];
|
196
|
+
|
197
|
+
}
|
194
198
|
|
195
199
|
for(count=0;count<1000;count++){
|
196
200
|
|
@@ -230,7 +234,7 @@
|
|
230
234
|
|
231
235
|
for (i=0;i<16;i++){
|
232
236
|
|
233
|
-
henkango[i+(count*16)]^=henkan[i+(count*16)];
|
237
|
+
henkango[i+(count+1*16)]^=henkan[i+(count+1*16)];
|
234
238
|
|
235
239
|
}
|
236
240
|
|
@@ -242,6 +246,8 @@
|
|
242
246
|
|
243
247
|
カウントアップ中に変換する関数を入れてhairetugo配列で出力し配列の次のバイトとXOR(ここでは16バイトと仮定)して繰り返す処理をしています。
|
244
248
|
|
249
|
+
配列のサイズ等一部変更しております。
|
250
|
+
|
245
251
|
|
246
252
|
|
247
253
|
|
4
カウントアップ処理の一部成功したコードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -106,6 +106,146 @@
|
|
106
106
|
|
107
107
|
|
108
108
|
|
109
|
+
##試したこと
|
110
|
+
|
111
|
+
```#include <stdio.h>
|
112
|
+
|
113
|
+
#include <stdlib.h>
|
114
|
+
|
115
|
+
#include<string.h>
|
116
|
+
|
117
|
+
#include"a.h"
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
int i,j,count=0;
|
122
|
+
|
123
|
+
FILE* file1,*file2,*file3,*file4;
|
124
|
+
|
125
|
+
unsigned char hairetu[128]= {0};
|
126
|
+
|
127
|
+
unsigned char counter[32]= {0};
|
128
|
+
|
129
|
+
unsigned char henkango[128]= {0};
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
int main(){
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
fp1 = fopen("testvector.bin", "rb" );
|
138
|
+
|
139
|
+
if( fp1 == NULL ){
|
140
|
+
|
141
|
+
printf( "ファイルオープンに失敗しました。同じフォルダにありません\n" );
|
142
|
+
|
143
|
+
exit( 1 );
|
144
|
+
|
145
|
+
}
|
146
|
+
|
147
|
+
fread( hairetu, sizeof(unsigned char), sizeof(hairetu), fp1 );
|
148
|
+
|
149
|
+
fclose(fp1);
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
fp2 = fopen("counter.bin","rb" );
|
154
|
+
|
155
|
+
if( fp2 == NULL ){
|
156
|
+
|
157
|
+
printf( "ファイルオープンに失敗しました。同じフォルダにありません\n" );
|
158
|
+
|
159
|
+
exit( 1 );
|
160
|
+
|
161
|
+
}
|
162
|
+
|
163
|
+
fread( counter, sizeof(char), sizeof(counter), fp2 );
|
164
|
+
|
165
|
+
fclose(fp2);
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
fp3 = fopen("henkango.bin","rb" );
|
170
|
+
|
171
|
+
if( fp3 == NULL ){
|
172
|
+
|
173
|
+
printf( "ファイルオープンに失敗しました。同じフォルダにありません\n" );
|
174
|
+
|
175
|
+
exit( 1 );
|
176
|
+
|
177
|
+
}
|
178
|
+
|
179
|
+
fread( henakngo, sizeof(char), sizeof(henkango), fp3 );
|
180
|
+
|
181
|
+
fclose(fp3);
|
182
|
+
|
183
|
+
}
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
puts("");
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
henkan(counter,henkango);
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
for(count=0;count<1000;count++){
|
196
|
+
|
197
|
+
for (i = 0; i < 32; i++){
|
198
|
+
|
199
|
+
if(counter[i+31]<0xff){
|
200
|
+
|
201
|
+
counter[i+31]+=0x01;
|
202
|
+
|
203
|
+
}
|
204
|
+
|
205
|
+
else if(ctr[i+31]==0xff){
|
206
|
+
|
207
|
+
counter[i+30]+=0x01;
|
208
|
+
|
209
|
+
counter[i+31]=0x00;
|
210
|
+
|
211
|
+
if(count>0){
|
212
|
+
|
213
|
+
if(counter[i+30]=0xff,ctr[i+31]=0xff){
|
214
|
+
|
215
|
+
counter[i+29]+=0x01;
|
216
|
+
|
217
|
+
counter[i+30]+=0x00;
|
218
|
+
|
219
|
+
counter[i+31]+=0x00;
|
220
|
+
|
221
|
+
}
|
222
|
+
|
223
|
+
}
|
224
|
+
|
225
|
+
}
|
226
|
+
|
227
|
+
}
|
228
|
+
|
229
|
+
henkan(counter,henkango+(count*16);
|
230
|
+
|
231
|
+
for (i=0;i<16;i++){
|
232
|
+
|
233
|
+
henkango[i+(count*16)]^=henkan[i+(count*16)];
|
234
|
+
|
235
|
+
}
|
236
|
+
|
237
|
+
}
|
238
|
+
|
239
|
+
```
|
240
|
+
|
241
|
+
意見をもとに配列の部分をカウントアップをなんとか処理できましたがこれを配列をhairetu[0]まで左にずらしつついれていくのは大変でまとめる方法はありますか?
|
242
|
+
|
243
|
+
カウントアップ中に変換する関数を入れてhairetugo配列で出力し配列の次のバイトとXOR(ここでは16バイトと仮定)して繰り返す処理をしています。
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
109
249
|
##動作環境
|
110
250
|
|
111
251
|
C VisualStudioCode LINUX
|
3
サンプルコードを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
|
44
44
|
|
45
|
-
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
|
45
|
+
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
46
46
|
|
47
47
|
unsigned char hairetu2[32]={0};
|
48
48
|
|
2
サンプルコードを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,7 +64,7 @@
|
|
64
64
|
|
65
65
|
for(i=0;i<32;i++){
|
66
66
|
|
67
|
-
hairetu2[i]^=hoge[i];
|
67
|
+
hairetu2[i+16]^=hoge[i+16];
|
68
68
|
|
69
69
|
}
|
70
70
|
|
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
for(i=0;i<32;i++){
|
76
76
|
|
77
|
-
hairetu2[i]^=hoge[i];
|
77
|
+
hairetu2[i+32]^=hoge[i+32];
|
78
78
|
|
79
79
|
}
|
80
80
|
|
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
for(i=0;i<32;i++){
|
86
86
|
|
87
|
-
hairetu2[i]^=hoge[i];
|
87
|
+
hairetu2[i+48]^=hoge[i+48];
|
88
88
|
|
89
89
|
}
|
90
90
|
|
1
サンプルコードを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,25 +14,83 @@
|
|
14
14
|
|
15
15
|
```
|
16
16
|
|
17
|
-
|
17
|
+
#include<stdio.h>
|
18
18
|
|
19
|
-
|
19
|
+
#include"a.h"
|
20
20
|
|
21
|
-
|
21
|
+
int main(){
|
22
22
|
|
23
|
+
unsigned char hairetu[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
24
|
+
|
25
|
+
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
26
|
+
|
27
|
+
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
|
28
|
+
|
29
|
+
0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
|
30
|
+
|
31
|
+
unsigned char hoge1[32]={0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,
|
32
|
+
|
33
|
+
0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c,
|
34
|
+
|
35
|
+
{0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,
|
36
|
+
|
37
|
+
0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c}
|
38
|
+
|
39
|
+
unsigned char hoge[32]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
|
40
|
+
|
41
|
+
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
|
42
|
+
|
43
|
+
0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
|
44
|
+
|
45
|
+
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
|
46
|
+
|
47
|
+
unsigned char hairetu2[32]={0};
|
48
|
+
|
49
|
+
abc(hairetu,hoge1,hairetu2);
|
50
|
+
|
51
|
+
hairetu[31]=0;
|
52
|
+
|
53
|
+
hairetu[32]=0;
|
54
|
+
|
55
|
+
for(i=0;i<32;i++){
|
56
|
+
|
23
|
-
hairetu[
|
57
|
+
hairetu2[i]^=hoge[i];
|
58
|
+
|
59
|
+
}
|
60
|
+
|
61
|
+
hairetu[32]=1;
|
62
|
+
|
63
|
+
abc(hairetu,hoge1,hairetu2+16);
|
64
|
+
|
65
|
+
for(i=0;i<32;i++){
|
66
|
+
|
67
|
+
hairetu2[i]^=hoge[i];
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
hairetu[32]=2;
|
72
|
+
|
73
|
+
abc(hairetu,hoge1,hairetu2+32);
|
74
|
+
|
75
|
+
for(i=0;i<32;i++){
|
76
|
+
|
77
|
+
hairetu2[i]^=hoge[i];
|
78
|
+
|
79
|
+
}
|
80
|
+
|
81
|
+
hairetu[32]=3;
|
82
|
+
|
83
|
+
abc(hairetu,hoge1,hairetu2+48);
|
84
|
+
|
85
|
+
for(i=0;i<32;i++){
|
86
|
+
|
87
|
+
hairetu2[i]^=hoge[i];
|
24
88
|
|
25
89
|
}
|
26
90
|
|
27
|
-
|
91
|
+
|
28
92
|
|
29
|
-
for(i=0;i<32;i++){
|
30
93
|
|
31
|
-
hairetu[32]+=hoge[i];
|
32
|
-
|
33
|
-
}
|
34
|
-
|
35
|
-
hairetu[32]=2;
|
36
94
|
|
37
95
|
```
|
38
96
|
|