Tacosan の回答履歴
- 暗号利用モードの実装
C言語でAESのEBCモードを実装しようとしています。 unsigned char key[32]; int w[60]; int data[NB]; int nk; int nr; int data2[32]; int Cipher(int *); int invCipher(int *); void encryptEBC(int *,int n); void decryptEBC(int *,int n); main(){ unsigned char keys[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; unsigned char iv[]={0xcb,0x70,0x05,0x9e,0x27,0x2f,0x4e,0xd2, 0xd0,0xbe,0x0b,0x06,0xbf,0x16,0xec,0x5a}; unsigned char init2[]={'1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0', '1','2','3','4','5','6','7','8','9','0',0x0a}; int isize = sizeof(init2)/sizeof(init2[0]); int dsize2 = sizeof(data2)/sizeof(data2[0]); printf("%d,%d\n",isize,dsize2); FILE *fp; char *fname = "test.txt"; unsigned char init[16]; int i = 0; int c; fp = fopen( fname, "r" ); if( fp == NULL ){ printf( "%sファイルが開けません\n", fname ); return -1; } while( (c = fgetc( fp )) != EOF ){ init[i] = c; i = i+1; } fclose( fp ); memcpy(key,keys,16); nk = 4; nr = nk + 6; KeyExpansion(key); memcpy(data,init,16); memcpy(data2,init2,isize); datadump("PLAINTEXT: ",data,16); datadump("KEY: ",key,16); Cipher(data); datadump("Cipher: ",data,16); invCipher(data); datadump("invCipher: ",data,16); printf("\n"); datadump("PLAINTEXT: ",data2,dsize2); encryptEBC(data2,dsize2); datadump("EBCCipher: ",data2,dsize2); decryptEBC(data2,dsize2); datadump("invCipher: ",data2,dsize2); printf("\n"); return 0; } void encryptEBC(int data[],int dsize){ int tmp[16]; int i,j,k; printf("aiu%d\n",dsize); KeyExpansion(key); for (i = 0; i < dsize; i += 16) { memcpy(tmp,&data[i],16); Cipher(tmp); memcpy(&data[i],tmp,16); } } void decryptEBC(int data[],int dsize){ int tmp[16]; int i,j,k; printf("eo%d\n",dsize); KeyExpansion(key); for (i = 0; i < dsize; i += 16) { memcpy(tmp,&data[i],16); invCipher(tmp); memcpy(&data[i],tmp,16); } } このようなプログラムでとりあえず2ブロック分の暗号化、復号を行おうと思っているのですが、1ブロック目しか行えません。 どなたかどこが悪いのかご教授いただけないでしょうか?
- 大根の消化酵素は何のため
大根は、でんぷん、たんぱく質、脂肪などの消化酵素を持っているといいます。 大根は何の目的でこんなものを持っているのでしょうか?虫除けでしょうか?
- 絶対に解けないパズル?問題??
昔数学の教師に聞いた問題なのですが、いまだに答えがわかりません。 恥ずかしながら解けるのか答えがあるのかもわかりません。 これはただのパズルなのか、それとも数学の問題とか幾何学とか物理とか哲学 で何か名前があるのでしょうか? 数学的に何か名前があるのだったら不可能なことが証明されているのでしょうか?? 問題がわかりにくかったらお許しください。 I 3個の点が向かい合っている。合計6個。 II 3個の点の1個の点それぞれから、向かい合った違う3個の点それぞれに一本ずつ線を書く。合計9本。 III 線は交わってはいけない。 IV 線は曲線でも点の間でも迂回しても点の後ろからでも、線はどう書いても良い。 20年たまに思い出してはチャレンジしています(笑)よろしくお願いします。
- ベストアンサー
- 数学・算数
- manaty2015
- 回答数6
- 高校数学の整数問題についてです
下記二問の解き方と答えをどなたか教えていただけませんでしょうか。。 (1)x4+1を割ると商がx2-x 、余りがx+1となる整数B (2)x=√2-1のとき(ア)x2+2x-1 (イ)x4-4x2+6x+2 宜しくお願いしますm(_ _)m
- コンピュータアーキテクチャの問題です
(1)レジスタ、メモリに初期状態が以下表である時 レジスタ GR0 7 GR1 2 番地 データ 100 10 110 8 120 3 5÷3の計算を行うための一連の命令をニーモニック表現で示せ 値はすべて10進数とする。 ただし以下の3条件に従うこと 1.最初の命令をLI1、100とする 2.計算結果は120番地に格納すること 3.最低1回は命令でXRを指定すること。 (2)ハードウェア障害によってGR2とメモリの120番地が使用不能となったものとして、5÷3の計算を行うための一連の命令をニーモニック表現で示せ。 初期状態は(1)の開始時と同様とし、(1)とはことなり最初の命令は制限がない。 計算結果は110番地に格納すること。 ニーモニック表現 命令 OP 16進 説明 表記 ロード LD 10 r←(efa) LD GR,adr,XR ストア ST 20 r→(efa) ST GR,adr,XR 加算 AD 70 r←r+(efa) AD GR,adr,XR 減算 SB 75 r←r-(eaf) SB GR,adr,XR 乗算 MP 85 r←r×(eaf) MP GR,adr,XR 除算 DV 55 r←r÷(eaf) DV GR,adr,XR 即値 LI 30 r←ID LI GR, ID という問題ですがわかる人教えてください。よろしくお願いします
- ベストアンサー
- その他([技術者向] コンピューター)
- wakatyu1
- 回答数1
- 高校数学の整数問題についてです
下記二問の解き方と答えをどなたか教えていただけませんでしょうか。。 (1)x4+1を割ると商がx2-x 、余りがx+1となる整数B (2)x=√2-1のとき(ア)x2+2x-1 (イ)x4-4x2+6x+2 宜しくお願いしますm(_ _)m
- [中学理科]酸とアルカリの中和について
この、図が何を示しているのか分かりません。 例えば、酸→ 水素イオン + 陰イオン→ 塩 これは、 [酸]水素イオンと陰イオンが結びつくと塩になるということでしょうか? だとすれば、塩はアルカリの陽イオンと酸の陰イオンが結びついてできる 物質なので、陽極の水素イオン[酸]と陰イオンが結びついてできる物質は、 塩ではないと思うのですが、一体何をこの図は示しているのでしょうか?
- 配列の長さについて
現在課題で書いているプログラムに以下のような関数があるのですが、 unsigned char key[32]; int w[60]; int data[NB]; int nk; int nr; int data2[32]; int Cipher(int *); int invCipher(int *); void encryptEBC(int *); void decryptEBC(int *); main(){ unsigned char keys[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; unsigned char iv[]={0xcb,0x70,0x05,0x9e,0x27,0x2f,0x4e,0xd2, 0xd0,0xbe,0x0b,0x06,0xbf,0x16,0xec,0x5a}; unsigned char init2[]={'1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0', '1','2','3','4','5','6','7','8','9','0',0x0a}; //unsigned char init2[]={'h','e','l','l','o'}; int isize = sizeof(init2)/sizeof(init2[0]); int dsize2 = sizeof(data2)/sizeof(data2[0]); printf("%d,%d\n",isize,dsize2); FILE *fp; char *fname = "test.txt"; unsigned char init[16]; int i = 0; int c; fp = fopen( fname, "r" ); if( fp == NULL ){ printf( "%sファイルが開けません\n", fname ); return -1; } while( (c = fgetc( fp )) != EOF ){ init[i] = c; i = i+1; } fclose( fp ); memcpy(key,keys,16); nk = 4; nr = nk + 6; KeyExpansion(key); memcpy(data,init,16); memcpy(data2,init2,isize); printf("%d\n",dsize2); datadump("PLAINTEXT: ",data,16); datadump("KEY: ",key,16); Cipher(data); datadump("Cipher: ",data,16); invCipher(data); datadump("invCipher: ",data,16); printf("\n"); printf("%d\n",dsize2); datadump("PLAINTEXT: ",data2,dsize2); encryptEBC(data2); printf("%d\n",dsize2); datadump("EBCCipher: ",data2,dsize2); decryptEBC(data2); datadump("invCipher: ",data2,dsize2); printf("\n"); return 0; } void encryptEBC(int data[]){ int dsize = sizeof(data)/sizeof(data[0]); int tmp[16]; int i,j,k; printf("%d\n",dsize); KeyExpansion(key); for (i = 0; i < dsize; i += 16) { for (j = 0; j < 16; j++){ tmp[j] = data[i + j]; } Cipher(tmp); for(k=0;k<16;k++){ data[i+k] = tmp[k]; } } } 関数encryptEBC内のdsizeの値がこの場合だとmain内の配列data2の長さ32になってほしいのですが、1になってしまいます。 非常に見ずらいプログラムで申し訳ないのですが、どなたか1になってしまう理由、またどうすれば正しくdata2の長さを求められるか教えていただけないでしょうか?
- 複素関数
複素数(1 + i)^50 - (1 - i)^50 の偏角と絶対値の求め方について 与式=exp(50*log(1+i)) - exp(50*log(1-i)) = exp(50*log√2) *{ cos(25π/2 + nπ/25) + i sin(25π/2 + nπ/25) - cos(-25π/2 + nπ/25) - i sin(-25π/2 + nπ/25)} = exp(50*log√2) *{ cos(π/2 + nπ/25) + i sin(π/2 + nπ/25) - cos(-π/2 + nπ/25) - i sin(-π/2 + nπ/25)} 加法定理を使って整理 与式= -2exp(50log√2) * (sin (nπ/25) - i * cos ( nπ/25 ) ) | z | = 2exp(50 log√2), 偏角 nπ/25 (n = 0, 1, 2, .....) というやり方でよろしいでしょうか? 偏角は nπ/25 なのでしょうか?
- 数学的帰納法おしえてください
帰納法の問題がわかりません。 (1)自然数nについて、等式1+2x+3x^2+..........+nx^n-1=1-(n+1)x^n+nx^n+1/(1-x)^2 が成り立つことを、数学的帰納法を用いて証明せよ。ただしxは1でないとする。 よろしくお願いします。
- ハミング符号の検査ビットについて
ハミング符号の検査ビットを0とするのか1とするのか分かりません。 例えば、送信するメッセージを1000001とおくと 検査ビットは0001となり、符号語は00100001001となります。 なぜ0001という並びになるのでしょうか? 分かる方宜しくお願い致します。
- アメリカの空軍州兵について
アメリカの空軍州兵について質問です。 F15/16/22/35とばりばりに正規軍の一部としかみなせないような機体が配備されていますが、空軍州兵とはどのような指揮権、予算の決定権になっているのでしょうか? そもそもいかなる役割で正規軍とは別に空軍州兵がおかれているのでしょうか? 州政府からしたら正規軍の予算を肩代わりさせられているようなもので、そんな予算は連邦で出せとならないのでしょうか? 組織、人事はどうなっているのでしょうか? ランボーに出てくるような自給○ドルのパートタイムで死にたくないとか言ってる兵士が正規軍として前線に立つのでしょうか?
- ベストアンサー
- 歴史
- jkpawapuro
- 回答数5
- 一方と閉じると、もう一方まで閉じてしまう
Linuxの一種を使っています。 wxMaximaというソフト(これをAとする)が、その上で動いています。このwxMaximaでヘルプを起動すると、別の窓が開いてヘルプ(これをBとする)が表示されます。 AとBは、見かけ上は別のソフトです。AからBを起動しますが、それ以降は少なくとも見掛け上は何の連動もありません。 ただし、Aと閉じるとBも閉じてしまいます。 Bを閉じるのはAには影響がありません。 実際の使用状況では、必要なのはBだけです。Aに閉じて欲しいのです。 可能でしょうか。
- 数字
英文で 1 billion billion という大きな数字が出てきたのですが、これは、日本語では、10京でよろしいでしょうか。よろしくお願いします。
- 締切済み
- 英語
- KumiYagami
- 回答数3