前提・実現したいこと
コードを書いてみたんですがもっとfor文のところを効率的にまとめる方法はありませんか?
最初にCとXOR
関数に入れてdを取得
d値と次のa(a+16)とXOR
関数に入れて再びdを取得
d値と次のa(a+16)とXOR
以降この繰り返し
unsigned char a[64]= {0}; unsigned char b[16]= {0}; unsigned char c[16]= {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; unsigned char d[64]= {0}; -省略- fread( a, sizeof(char), sizeof(a), file1 ); fread( b, sizeof(char), sizeof(b), file2); for(i=0;i<16;i++){ a[i]=a[i]^c[i]); } for(i=0;i<16;i++){ kansuu(&a[i],b,&d[i]); } for(i=0;i<16;i++){ a[i+16]=a[i+16]^d[i] } for(i=0;i<16;i++){ kansuu(&a[i+16],b,&d[i+16]); } for(i=0;i<16;i++){ a[i+32]=a[i+32]^d[i+16] } for(i=0;i<16;i++){ kansuu(&a[i+32],b,&d[i+32]); } for(i=0;i<16;i++){ a[i+48]=a[i+48]^d[i+32] } for(i=0;i<16;i++){ kansuu(&a[i+48],b,&d[i+48]); } 上記記入間違いでした。 訂正 for(i=0;i<16;i++){ a[i]^=c[i]; } kansuu(a,b,d); for(i=0;i<16;i++){ a[i+16]=a[i+16]^d[i] ; } kansuu(a+16,b,d+16]); for(i=0;i<16;i++){ a[i+32]=a[i+32]^d[i+16] ; } kansuu(a+32,b,&d+32); } for(i=0;i<16;i++){ a[i+48]=a[i+48]^d[i+32] } kansuu(a+48,b,d+48); }
##試したこと
a[i]=a[i]^c[i]); for(i=0;i<64;i++){ if(i==0){ kansuu(&a[i],b,&d[i]) } if(i>0){ kansuu(&a[i],b,&d[i]); a[i+16]=a[i+16]^d[i]; kansuu(&a[i+16],b,&d[i+16]); } }
補足情報(FW/ツールのバージョンなど)
C言語 VisualStudioCode LINUX
回答4件
あなたの回答
tips
プレビュー