codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
// v2.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include <emmintrin.h> #include <time.h> #include <stdlib.h> #include <sys/types.h> #include <sys/timeb.h> #include <stdio.h> #define N 256 #define K 6 unsigned char h3[K][N]; //unsigned char gf[N]={0,1,2,4,8,9,11,15,7,14,5,10,13,3,6,12}; //unsigned char fg[N]={0,1,2,13,3,10,14,8,4,5,11,6,15,12,9,7}; unsigned char gf[N]={0,1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142}; unsigned char fg[N]={0,1,2,26,3,51,27,199,4,224,52,239,28,105,200,76,5,101,225,15,53,142,240,130,29,194,106,249,201,9,77,114,6,139,102,48,226,37,16,34,54,148,143,219,241,19,131,70,30,182,195,126,107,40,250,186,202,155,10,121,78,229,115,167,7,192,140,99,103,222,49,254,227,153,38,180,17,146,35,137,55,209,149,207,144,151,220,190,242,211,20,93,132,57,71,65,31,67,183,164,196,73,127,111,108,59,41,85,251,134,187,62,203,95,156,160,11,22,122,44,79,213,230,173,116,244,168,88,8,113,193,248,141,129,100,14,104,75,223,238,50,198,255,25,228,166,154,120,39,185,181,125,18,69,147,218,36,33,138,47,56,64,210,92,150,189,208,206,145,136,152,179,221,253,191,98,243,87,212,172,21,43,94,159,133,61,58,84,72,110,66,163,32,46,68,217,184,124,165,119,197,24,74,237,128,13,112,247,109,162,60,83,42,158,86,171,252,97,135,178,188,205,63,91,204,90,96,177,157,170,161,82,12,246,23,236,123,118,45,216,80,175,214,234,231,232,174,233,117,215,245,235,169,81,89,176}; unsigned char g[K+1]={1,0,0,0,1,0,1}; //={130, 160, 130, 193, 130, 211, 130, 241, 130, 160, 130, 169, 130, 241, 130, 196}; unsigned char f[N]={131, 94, 131, 129, 131, 84, 131, 140, 131, 139, 131, 95, 131, 67, 131, 96}; int q[2]={0,0}; int q2[2]={0,0}; int q3[2]={0,0}; int r[K+1]={0,0,0,0,0,0,0}; //int g[7]={1,0,0,0,1,0,1}; int vv[4]={0,0,0,0}; int v[N]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; extern void genkey(char str[16]); void ff(){ int i,j; for(i=0;i<N;i++){ for(j=0;j<N;j++){ if(gf[j]==i) printf("%u,",j); } } } int mlt(int x, int y){ if(x==0||y==0) return 0; return ((x+y-2)%(N-1))+1; } int mltn(int n,int x){ int i,j; i=x; for(j=0;j<n-1;j++) i=mlt(i,x); return i; } int dv(int x,int y){ if(x==0) return 0; return ((x-y+(N-1))%(N-1))+1; } void lk(){ unsigned int o=0,x,a,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,c[7],d[2]; int i,j,read_size; unsigned char e[6]={0,0,0,0,0,1}, s[6]={0,0,0,0,0,0}; unsigned char r[7]={0,0,0,0,0,0,0}; //unsigned char v[16]={1,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0}; char str[N]; for(x=0;x<N;x++){ a=gf[mlt(mlt(mlt(fg[x],fg[x]),mlt(fg[x],fg[x])),mlt(fg[x],fg[x]))]^gf[mlt(fg[x],fg[x])]^1; /*=begin a128=gf[mltn(128,fg[x])] a64=gf[mltn(64,fg[x])] a32=gf[mltn(32,fg[x])] a16=gf[mltn(16,fg[x])] a15=gf[mlt(g[15],mltn(15,fg[x]))] a14=gf[mlt(g[14],mltn(14,fg[x]))] a13=gf[mlt(g[13],mltn(13,fg[x]))] a12=gf[mlt(g[12],mltn(12,fg[x]))] a11=gf[mlt(g[11],mltn(11,fg[x]))] a10=gf[mlt(g[10],mltn(10,fg[x]))] a9=gf[mlt(g[9],mltn(9,fg[x]))] a8=gf[mlt(g[8],mltn(8,fg[x]))] a7=gf[mlt(g[7],mltn(7,fg[x]))] a6=gf[mlt(g[6],mltn(6,fg[x]))] a5=gf[mlt(mlt(mlt(fg[x],fg[x]),mlt(fg[x],fg[x])),mlt(g[5],fg[x]))] a4=gf[mlt(mlt(mlt(fg[x],fg[x]),mlt(fg[x],fg[x])),g[4])]; a3=gf[mlt(mlt(fg[x],fg[x]),mlt(fg[x],g[3]))]; a2=gf[mlt(mlt(fg[x],fg[x]),g[2])]; a=gf[mlt(fg[x],g[1])]^g[0]; a=a^a2^a3^a4^a5^a6^a7^a8^a9^a10^a11^a12^a13^a14^a15^a16 #^a32^a64^a128; =end */ if(a==0){ printf("trace 0\n"); exit(1); } /* print a," " for j in 0..15 b=gf[mlt(mlt(fg[j],fg[j]),fg[j])]^gf[fg[j]]^1^a; if(b==0) print "j=",j,"\n" end end */ //c=[1^a,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1] //c=[1^a,0,0,0,0,0,0,0,0,0,g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15],g[16],g[17],g[18],g[19],g[20],g[21],g[22],g[23],g[24],g[25],g[26],g[27],g[28],g[29],g[30],g[31],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1] //c=[g[0]^a,g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15],1]; //c=[g[0]^a,g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; c[0]=1^a; c[1]=0; c[2]=1; c[3]=0; c[4]=0; c[5]=0; c[6]=1; d[0]=x; d[1]=1; //e=[0,0,0,0,0,1] //for(i=0;i<7;i++) //r[i]=0; //#e=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] //#r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] e[5]=1; i=K; while(i>0){ r[i]=gf[mlt(fg[d[1]],fg[e[i-1]])]; r[i-1]=gf[mlt(fg[d[0]],fg[e[i-1]])]; //#print r[i]," r",i," ",r[i-1]," ",e[i-1],"\n" j=K; while(j>-1){ c[j]=r[j]^gf[fg[c[j]]]; // print c[j]," c" j=j-1; } //# print "\n" r[i]=c[i]; r[0]=c[0]; if(i-2>-1){ e[i-2]=c[i-1]; // printf("e %d\n",e[i-2]); } i=i-1; } for(i=0;i<K;i++){ h3[i][x]=gf[mlt(fg[e[K-1-i]],dv(1,fg[a]))]; if(x==5) printf("e=%d %d\n",e[K-1-i],a); } //#print x," " } //#exit() for(i=0;i<K;i++){ for(j=0;j<N;j++){ printf("%d,",h3[i][j]); } printf("\n"); } } int main(){ int i,j,k,read_size,oo,pp,qq; unsigned long cc,a,x; unsigned char s[6]={0,0,0,0,0,0},xx[3]={0,0,0},b[3]={0,0,0},bb[3]={0,0,0},c[3]={0,0,0},buf[6],buf2[6]; unsigned char v1=0,v2=1,v3[2]={0,0},v4[3]={0,0,0},v5[4]={0,0,0,0},p4[4]={0,0,0,0},p3[4]={0,0,0,0},p[4]={0,0,0,0}; FILE *fp,*fq,*fr; unsigned long long int ull,w; lk(); fp=fopen("3","rb"); fq=fopen("test.v2","wb"); fr=fopen("v2.out","wb"); printf("初期値を入れて下さい"); scanf("%u",&x); srand(x); w=281474976710655; k=rand()%256; //printf("s=%d\n",s[0]); // printf("%u ",k); oo=(k+45)%256; pp=(k+123)%256; qq=(k+234)%256; while((read_size=fread(buf,1,6,fp))>0){ i=0; // fread(buf,1,3,fp); //printf("!"); // if(k>50){ v[oo]=rand()%256; v[pp]=rand()%256; v[qq]=rand()%256; for(j=0;j<K;j++){ for(i=0;i<N;i++){ if(v[i]!=0){ s[j]^=gf[mlt(fg[v[i]],fg[h3[j][i]])]; } } // printf("%d ", s[j]); } buf[0]^=s[0]; buf[3]^=s[3]; buf[1]^=s[1]; buf[4]^=s[4]; buf[2]^=s[2]; buf[5]^=s[5]; fwrite(buf,1,6,fq); } fclose(fr); //printf("\n"); return 0; }
Private
[
?
]
Run code
Submit