質問編集履歴

9

2021/02/12 00:39

投稿

alles-durch
alles-durch

スコア3

test CHANGED
File without changes
test CHANGED
@@ -142,7 +142,7 @@
142
142
 
143
143
 
144
144
 
145
- for(count=0;count<1000;count++){​
145
+ for(count=0;count<100;count++){​
146
146
 
147
147
  for (i = 0; i < 32; i++){​
148
148
 

8

2021/02/12 00:39

投稿

alles-durch
alles-durch

スコア3

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

2021/02/12 00:18

投稿

alles-durch
alles-durch

スコア3

test CHANGED
File without changes
test CHANGED
@@ -118,9 +118,7 @@
118
118
 
119
119
  int i,j,count=0;​
120
120
 
121
- FILE* file1,*file2,*file3,*file4;
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("testvector.bin", "rb" );​
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), fp2 );​
139
+ fread( counter, sizeof(char), sizeof(counter), fp1 );​
158
140
 
159
- fclose(fp2);​
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

2021/02/12 00:16

投稿

alles-durch
alles-durch

スコア3

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
- henkan(counter,henkango+(count*16);​
196
+
234
-
235
- for (i=0;i<16;i++){​
197
+
236
-
237
- henkango[i+(count+1*16)]^=henkan[i+(count+1*16)];​
238
-
239
- }
240
-
241
- }
242
198
 
243
199
  ```
244
200
 
245
- 意見をもとに配列の部分をカウントアップをなんとか処理できましたがこれを配列をhairetu[0]まで左にずらしつついれていくのは大変でまとめる方法はりますか?
201
+ 意見をもとに配列の部分をカウントアップをなんとか処理できましたcounter[0]まで左にずらしつついれていくのは大変でまとめる方法やもとに戻る方法わかりませんでしたが。
246
-
247
- カウントアップ中に変換する関数を入れてhairetugo配列で出力し配列の次のバイトとXOR(ここでは16バイトと仮定)して繰り返す処理をしています。
248
202
 
249
203
  配列のサイズ等一部変更しております。
250
204
 

5

カウントアップ処理の一部成功したコードの修正

2021/02/12 00:12

投稿

alles-durch
alles-durch

スコア3

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

カウントアップ処理の一部成功したコードの修正

2021/02/10 14:30

投稿

alles-durch
alles-durch

スコア3

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

サンプルコードを追加

2021/02/10 14:26

投稿

alles-durch
alles-durch

スコア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,0x01,
45
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
46
46
 
47
47
  unsigned char hairetu2[32]={0};
48
48
 

2

サンプルコードを追加

2021/02/09 15:35

投稿

alles-durch
alles-durch

スコア3

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

サンプルコードを追加

2021/02/09 15:33

投稿

alles-durch
alles-durch

スコア3

test CHANGED
File without changes
test CHANGED
@@ -14,25 +14,83 @@
14
14
 
15
15
  ```
16
16
 
17
- hairetu[31]=0;
17
+ #include<stdio.h>
18
18
 
19
- hairetu[32]=0;
19
+ #include"a.h"
20
20
 
21
- for(i=0;i<32;i++){
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[32]+=hoge[i];
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
- hairetu[32]=1;
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