#include #include #include #include int ika254(int x) { while(x>=255){ x -=255; } while(-9999=1){ for(i=0;i<16;i++){ SWA[i] = WARARERU[i]; } for(i=0;i<4+12;i++){ WARARERU[i] = WARU[i]; } for(i=0;i<4+12;i++){ WARU[i] = SWA[i]; } WARU[4+12] = 0; } for(i=0;i<33;i++){ Q[i] = 0; } for(i=0;i<15;i++){ if(WARARERU[3+12-i] != 0){ k=i;break;//goto l2a; } } l++; }//while loop end //last: /* int SIGMA[3];*/ SIGMA[2] = 0; SIGMA[1] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,Q[1]) - GF256VEC2EXP(Y,Q[0]))); SIGMA[0] = 1; // goto hhh; ;;; printf("miseisaku!!\n");while(1); last: // ji8ji8polymult(B[l+1],Q,B[l+2],Y); // B[l+2][0] ^= 1; for(i=0;i<17;i++){ SIGMA[i] = B[l+2][i]; } SIGMA[16] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[16]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[15] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[15]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[14] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[14]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[13] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[13]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[12] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[12]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[11] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[11]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[10] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[10]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[9] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[9]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[8] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[8]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[7] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[7]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[6] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[6]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[5] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[5]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[4] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[4]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[3] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[3]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[2] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[2]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[1] = GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,SIGMA[1]) - GF256VEC2EXP(Y,SIGMA[0]))); SIGMA[0] = 1; //hhh: ; for(i=0;i<17;i++){ printf("SIGMA[%d] = %d,ALFA^%d\n",i,SIGMA[i],GF256VEC2EXP(Y,SIGMA[i])); } //while(1); for(i=0;i<9;i++){ if(SIGMA[8-i] != 0){ l=8-i;break; } } if(l==8){goto ayamari8ko;} if(l==7){goto ayamari7ko;} if(l==6){goto ayamari6ko;} if(l==5){goto ayamari5ko;} if(l==4){goto ayamari4ko;} if(l==3){goto ayamari3ko;} if(l==2){goto ayamari2ko;} if(l==1){goto ayamari1ko;} //8 block ayamari no baai AAG = VEC_DET8x8(S[8],S[7],S[6],S[5],S[4],S[3],S[2],S[1], S[9],S[8],S[7],S[6],S[5],S[4],S[3],S[2], S[10],S[9],S[8],S[7],S[6],S[5],S[4],S[3], S[11],S[10],S[9],S[8],S[7],S[6],S[5],S[4], S[12],S[11],S[10],S[9],S[8],S[7],S[6],S[5], S[13],S[12],S[11],S[10],S[9],S[8],S[7],S[6], S[14],S[13],S[12],S[11],S[10],S[9],S[8],S[7], S[15],S[14],S[13],S[12],S[11],S[10],S[9],S[8],Y); printf("AAG=%d\n",AAG); // while(1); if(AAG==0){goto ayamari7ika;} RAW1BUNSHI = VEC_DET8x8(S[9],S[7],S[6],S[5],S[4],S[3],S[2],S[1], S[10],S[8],S[7],S[6],S[5],S[4],S[3],S[2], S[11],S[9],S[8],S[7],S[6],S[5],S[4],S[3], S[12],S[10],S[9],S[8],S[7],S[6],S[5],S[4], S[13],S[11],S[10],S[9],S[8],S[7],S[6],S[5], S[14],S[12],S[11],S[10],S[9],S[8],S[7],S[6], S[15],S[13],S[12],S[11],S[10],S[9],S[8],S[7], S[16],S[14],S[13],S[12],S[11],S[10],S[9],S[8],Y); RAW2BUNSHI = VEC_DET8x8(S[8],S[9],S[6],S[5],S[4],S[3],S[2],S[1], S[9],S[10],S[7],S[6],S[5],S[4],S[3],S[2], S[10],S[11],S[8],S[7],S[6],S[5],S[4],S[3], S[11],S[12],S[9],S[8],S[7],S[6],S[5],S[4], S[12],S[13],S[10],S[9],S[8],S[7],S[6],S[5], S[13],S[14],S[11],S[10],S[9],S[8],S[7],S[6], S[14],S[15],S[12],S[11],S[10],S[9],S[8],S[7], S[15],S[16],S[13],S[12],S[11],S[10],S[9],S[8],Y); RAW3BUNSHI = VEC_DET8x8(S[8],S[7],S[9],S[5],S[4],S[3],S[2],S[1], S[9],S[8],S[10],S[6],S[5],S[4],S[3],S[2], S[10],S[9],S[11],S[7],S[6],S[5],S[4],S[3], S[11],S[10],S[12],S[8],S[7],S[6],S[5],S[4], S[12],S[11],S[13],S[9],S[8],S[7],S[6],S[5], S[13],S[12],S[14],S[10],S[9],S[8],S[7],S[6], S[14],S[13],S[15],S[11],S[10],S[9],S[8],S[7], S[15],S[14],S[16],S[12],S[11],S[10],S[9],S[8],Y); RAW4BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[9],S[4],S[3],S[2],S[1], S[9],S[8],S[7],S[10],S[5],S[4],S[3],S[2], S[10],S[9],S[8],S[11],S[6],S[5],S[4],S[3], S[11],S[10],S[9],S[12],S[7],S[6],S[5],S[4], S[12],S[11],S[10],S[13],S[8],S[7],S[6],S[5], S[13],S[12],S[11],S[14],S[9],S[8],S[7],S[6], S[14],S[13],S[12],S[15],S[10],S[9],S[8],S[7], S[15],S[14],S[13],S[16],S[11],S[10],S[9],S[8],Y); RAW5BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[5],S[9],S[3],S[2],S[1], S[9],S[8],S[7],S[6],S[10],S[4],S[3],S[2], S[10],S[9],S[8],S[7],S[11],S[5],S[4],S[3], S[11],S[10],S[9],S[8],S[12],S[6],S[5],S[4], S[12],S[11],S[10],S[9],S[13],S[7],S[6],S[5], S[13],S[12],S[11],S[10],S[14],S[8],S[7],S[6], S[14],S[13],S[12],S[11],S[15],S[9],S[8],S[7], S[15],S[14],S[13],S[12],S[16],S[10],S[9],S[8],Y); RAW6BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[5],S[4],S[9],S[2],S[1], S[9],S[8],S[7],S[6],S[5],S[10],S[3],S[2], S[10],S[9],S[8],S[7],S[6],S[11],S[4],S[3], S[11],S[10],S[9],S[8],S[7],S[12],S[5],S[4], S[12],S[11],S[10],S[9],S[8],S[13],S[6],S[5], S[13],S[12],S[11],S[10],S[9],S[14],S[7],S[6], S[14],S[13],S[12],S[11],S[10],S[15],S[8],S[7], S[15],S[14],S[13],S[12],S[11],S[16],S[9],S[8],Y); RAW7BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[5],S[4],S[3],S[9],S[1], S[9],S[8],S[7],S[6],S[5],S[4],S[10],S[2], S[10],S[9],S[8],S[7],S[6],S[5],S[11],S[3], S[11],S[10],S[9],S[8],S[7],S[6],S[12],S[4], S[12],S[11],S[10],S[9],S[8],S[7],S[13],S[5], S[13],S[12],S[11],S[10],S[9],S[8],S[14],S[6], S[14],S[13],S[12],S[11],S[10],S[9],S[15],S[7], S[15],S[14],S[13],S[12],S[11],S[10],S[16],S[8],Y); RAW8BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[5],S[4],S[3],S[2],S[9], S[9],S[8],S[7],S[6],S[5],S[4],S[3],S[10], S[10],S[9],S[8],S[7],S[6],S[5],S[4],S[11], S[11],S[10],S[9],S[8],S[7],S[6],S[5],S[12], S[12],S[11],S[10],S[9],S[8],S[7],S[6],S[13], S[13],S[12],S[11],S[10],S[9],S[8],S[7],S[14], S[14],S[13],S[12],S[11],S[10],S[9],S[8],S[15], S[15],S[14],S[13],S[12],S[11],S[10],S[9],S[16],Y); RAW1EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW1BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAG))))); RAW2EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW2BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAG))))); RAW3EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW3BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAG))))); RAW4EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW4BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAG))))); RAW5EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW5BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAG))))); RAW6EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW6BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAG))))); RAW7EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW7BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAG))))); RAW8EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW8BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAG))))); // for(i=0;i<9;i++){ printf("RAW1EXP=%d\n",RAW1EXP); printf("RAW2EXP=%d\n",RAW2EXP); printf("RAW3EXP=%d\n",RAW3EXP); printf("RAW4EXP=%d\n",RAW4EXP); printf("RAW5EXP=%d\n",RAW5EXP); printf("RAW6EXP=%d\n",RAW6EXP); printf("RAW7EXP=%d\n",RAW7EXP); printf("RAW8EXP=%d\n",RAW8EXP);while(1); // } ayamari8ko: RAW1EXP = GF256VEC2EXP(Y,SIGMA[1]); RAW2EXP = GF256VEC2EXP(Y,SIGMA[2]); RAW3EXP = GF256VEC2EXP(Y,SIGMA[3]); RAW4EXP = GF256VEC2EXP(Y,SIGMA[4]); RAW5EXP = GF256VEC2EXP(Y,SIGMA[5]); RAW6EXP = GF256VEC2EXP(Y,SIGMA[6]); RAW7EXP = GF256VEC2EXP(Y,SIGMA[7]); RAW8EXP = GF256VEC2EXP(Y,SIGMA[8]); for(i=0;i<255;i++){ CHEN[i] = (GF256EXP2VEC(Y,GF256MULT(RAW8EXP,(255-i)*8)) ^GF256EXP2VEC(Y,GF256MULT(RAW7EXP,(255-i)*7)) ^GF256EXP2VEC(Y,GF256MULT(RAW6EXP,(255-i)*6)) ^GF256EXP2VEC(Y,GF256MULT(RAW5EXP,(255-i)*5)) ^ GF256EXP2VEC(Y,GF256MULT(RAW4EXP,(255-i)*4)) ^ GF256EXP2VEC(Y,GF256MULT(RAW3EXP,(255-i)*3)) ^ GF256EXP2VEC(Y,GF256MULT(RAW2EXP,(255-i)*2)) ^ GF256EXP2VEC(Y,GF256MULT(RAW1EXP,255-i))); printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); } FLAG = 0; for(i=0,k=0;i<255;i++){ // printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); if(FLAG == 7 && CHEN[i] == 1){ ERRLOC8 = i;FLAG = 8; } if(FLAG == 6 && CHEN[i] == 1){ ERRLOC7 = i;FLAG = 7; } if(FLAG == 5 && CHEN[i] == 1){ ERRLOC6 = i;FLAG = 6; } if(FLAG == 4 && CHEN[i] == 1){ ERRLOC5 = i;FLAG = 5; } if(FLAG == 3 && CHEN[i] == 1){ ERRLOC4 = i;FLAG = 4; } if(FLAG == 2 && CHEN[i] == 1){ ERRLOC3 = i;FLAG = 3; } if(FLAG == 1 && CHEN[i] == 1){ ERRLOC2 = i;FLAG=2; } if(CHEN[i] == 1 && FLAG ==0 ){ ERRLOC1 = i;FLAG=1; } } printf("ERRLOC1=%d,ERRLOC2=%dERRLOC3=%dERRLOC4=%dERRLOC5=%dERRLOC6=%dERRLOC7=%dERRLOC8=%d\n",ERRLOC1,ERRLOC2,ERRLOC3,ERRLOC4,ERRLOC5,ERRLOC6,ERRLOC7,ERRLOC8); BUNBO8EXP = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC8+(255-ERRLOC1))) )) ) ; BUNBO8EXP2 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC8+(255-ERRLOC2))) )) ) ; BUNBO8EXP3 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC8+(255-ERRLOC3))) )) ) ; BUNBO8EXP4 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC8+(255-ERRLOC4))) )) ) ; BUNBO8EXP5 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC8+(255-ERRLOC5))) )) ) ; BUNBO8EXP6 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC8+(255-ERRLOC6))) )) ) ; BUNBO8EXP7 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC8+(255-ERRLOC7))) )) ) ; BUNBO8EXP8 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC8))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC8))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC8))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC8))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC8))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC8))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC8))) )) ) ; printf("AYAMARIATAI[%d]=%x\n",ERRLOC1, GF256EXP2VEC(Y,ika254(SYNDSIGMA8EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,RAW8EXP,ERRLOC1) + (255-BUNBO8EXP)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC2, GF256EXP2VEC(Y,ika254(SYNDSIGMA8EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,RAW8EXP,ERRLOC2) + (255-BUNBO8EXP2)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC3, GF256EXP2VEC(Y,ika254(SYNDSIGMA8EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,RAW8EXP,ERRLOC3) + (255-BUNBO8EXP3)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC4, GF256EXP2VEC(Y,ika254(SYNDSIGMA8EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,RAW8EXP,ERRLOC4) + (255-BUNBO8EXP4)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC5, GF256EXP2VEC(Y,ika254(SYNDSIGMA8EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,RAW8EXP,ERRLOC5) + (255-BUNBO8EXP5)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC6, GF256EXP2VEC(Y,ika254(SYNDSIGMA8EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,RAW8EXP,ERRLOC6) + (255-BUNBO8EXP6)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC7, GF256EXP2VEC(Y,ika254(SYNDSIGMA8EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,RAW8EXP,ERRLOC7) + (255-BUNBO8EXP7)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC8, GF256EXP2VEC(Y,ika254(SYNDSIGMA8EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,RAW8EXP,ERRLOC8) + (255-BUNBO8EXP8)))); goto endend;// while(1); //7 block ayamari no baai ayamari7ika: AAF = VEC_DET7x7(S[7],S[6],S[5],S[4],S[3],S[2],S[1], S[8],S[7],S[6],S[5],S[4],S[3],S[2], S[9],S[8],S[7],S[6],S[5],S[4],S[3], S[10],S[9],S[8],S[7],S[6],S[5],S[4], S[11],S[10],S[9],S[8],S[7],S[6],S[5], S[12],S[11],S[10],S[9],S[8],S[7],S[6], S[13],S[12],S[11],S[10],S[9],S[8],S[7],Y); printf("AAF=%d\n",AAF); if(AAF==0){goto ayamari6ika;} RAW1BUNSHI = VEC_DET7x7(S[8],S[6],S[5],S[4],S[3],S[2],S[1], S[9],S[7],S[6],S[5],S[4],S[3],S[2], S[10],S[8],S[7],S[6],S[5],S[4],S[3], S[11],S[9],S[8],S[7],S[6],S[5],S[4] ,S[12],S[10],S[9],S[8],S[7],S[6],S[5] ,S[13],S[11],S[10],S[9],S[8],S[7],S[6], S[14],S[12],S[11],S[10],S[9],S[8],S[7],Y); RAW2BUNSHI = VEC_DET7x7(S[7],S[8],S[5],S[4],S[3],S[2],S[1], S[8],S[9],S[6],S[5],S[4],S[3],S[2], S[9],S[10],S[7],S[6],S[5],S[4],S[3], S[10],S[11],S[8],S[7],S[6],S[5],S[4] ,S[11],S[12],S[9],S[8],S[7],S[6],S[5] ,S[12],S[13],S[10],S[9],S[8],S[7],S[6], S[13],S[14],S[11],S[10],S[9],S[8],S[7],Y); RAW3BUNSHI = VEC_DET7x7(S[7],S[6],S[8],S[4],S[3],S[2],S[1], S[8],S[7],S[9],S[5],S[4],S[3],S[2], S[9],S[8],S[10],S[6],S[5],S[4],S[3], S[10],S[9],S[11],S[7],S[6],S[5],S[4] ,S[11],S[10],S[12],S[8],S[7],S[6],S[5] ,S[12],S[11],S[13],S[9],S[8],S[7],S[6], S[13],S[12],S[14],S[10],S[9],S[8],S[7],Y); RAW4BUNSHI = VEC_DET7x7(S[7],S[6],S[5],S[8],S[3],S[2],S[1], S[8],S[7],S[6],S[9],S[4],S[3],S[2], S[9],S[8],S[7],S[10],S[5],S[4],S[3], S[10],S[9],S[8],S[11],S[6],S[5],S[4] ,S[11],S[10],S[9],S[12],S[7],S[6],S[5] ,S[12],S[11],S[10],S[13],S[8],S[7],S[6], S[13],S[12],S[11],S[14],S[9],S[8],S[7],Y); RAW5BUNSHI = VEC_DET7x7(S[7],S[6],S[5],S[4],S[8],S[2],S[1], S[8],S[7],S[6],S[5],S[9],S[3],S[2], S[9],S[8],S[7],S[6],S[10],S[4],S[3], S[10],S[9],S[8],S[7],S[11],S[5],S[4] ,S[11],S[10],S[9],S[8],S[12],S[6],S[5] ,S[12],S[11],S[10],S[9],S[13],S[7],S[6], S[13],S[12],S[11],S[10],S[14],S[8],S[7],Y); RAW6BUNSHI = VEC_DET7x7(S[7],S[6],S[5],S[4],S[3],S[8],S[1], S[8],S[7],S[6],S[5],S[4],S[9],S[2], S[9],S[8],S[7],S[6],S[5],S[10],S[3], S[10],S[9],S[8],S[7],S[6],S[11],S[4] ,S[11],S[10],S[9],S[8],S[7],S[12],S[5] ,S[12],S[11],S[10],S[9],S[8],S[13],S[6], S[13],S[12],S[11],S[10],S[9],S[14],S[7],Y); RAW7BUNSHI = VEC_DET7x7(S[7],S[6],S[5],S[4],S[3],S[2],S[8], S[8],S[7],S[6],S[5],S[4],S[3],S[9], S[9],S[8],S[7],S[6],S[5],S[4],S[10], S[10],S[9],S[8],S[7],S[6],S[5],S[11] ,S[11],S[10],S[9],S[8],S[7],S[6],S[12] ,S[12],S[11],S[10],S[9],S[8],S[7],S[13], S[13],S[12],S[11],S[10],S[9],S[8],S[14],Y); RAW1EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW1BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAF))))); RAW2EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW2BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAF))))); RAW3EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW3BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAF))))); RAW4EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW4BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAF))))); RAW5EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW5BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAF))))); RAW6EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW6BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAF))))); RAW7EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW7BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAF))))); printf("RAW1EXP=%d\n",RAW1EXP); printf("RAW2EXP=%d\n",RAW2EXP); printf("RAW3EXP=%d\n",RAW3EXP); printf("RAW4EXP=%d\n",RAW4EXP); printf("RAW5EXP=%d\n",RAW5EXP); printf("RAW6EXP=%d\n",RAW6EXP); printf("RAW7EXP=%d\n",RAW7EXP);while(1); ayamari7ko: RAW1EXP = GF256VEC2EXP(Y,SIGMA[1]); RAW2EXP = GF256VEC2EXP(Y,SIGMA[2]); RAW3EXP = GF256VEC2EXP(Y,SIGMA[3]); RAW4EXP = GF256VEC2EXP(Y,SIGMA[4]); RAW5EXP = GF256VEC2EXP(Y,SIGMA[5]); RAW6EXP = GF256VEC2EXP(Y,SIGMA[6]); RAW7EXP = GF256VEC2EXP(Y,SIGMA[7]); for(i=0;i<255;i++){ CHEN[i] = (GF256EXP2VEC(Y,GF256MULT(RAW7EXP,(255-i)*7)) ^GF256EXP2VEC(Y,GF256MULT(RAW6EXP,(255-i)*6)) ^GF256EXP2VEC(Y,GF256MULT(RAW5EXP,(255-i)*5)) ^ GF256EXP2VEC(Y,GF256MULT(RAW4EXP,(255-i)*4)) ^ GF256EXP2VEC(Y,GF256MULT(RAW3EXP,(255-i)*3)) ^ GF256EXP2VEC(Y,GF256MULT(RAW2EXP,(255-i)*2)) ^ GF256EXP2VEC(Y,GF256MULT(RAW1EXP,255-i))); printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); } FLAG = 0; for(i=0,k=0;i<255;i++){ // printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); if(FLAG == 6 && CHEN[i] == 1){ ERRLOC7 = i;FLAG = 7; } if(FLAG == 5 && CHEN[i] == 1){ ERRLOC6 = i;FLAG = 6; } if(FLAG == 4 && CHEN[i] == 1){ ERRLOC5 = i;FLAG = 5; } if(FLAG == 3 && CHEN[i] == 1){ ERRLOC4 = i;FLAG = 4; } if(FLAG == 2 && CHEN[i] == 1){ ERRLOC3 = i;FLAG = 3; } if(FLAG == 1 && CHEN[i] == 1){ ERRLOC2 = i;FLAG=2; } if(CHEN[i] == 1 && FLAG ==0 ){ ERRLOC1 = i;FLAG=1; } } printf("ERRLOC1=%d,ERRLOC2=%dERRLOC3=%dERRLOC4=%dERRLOC5=%dERRLOC6=%dERRLOC7=%d\n",ERRLOC1,ERRLOC2,ERRLOC3,ERRLOC4,ERRLOC5,ERRLOC6,ERRLOC7); BUNBO7EXP = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC1))) )) ) ; BUNBO7EXP2 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC2))) )) ) ; BUNBO7EXP3 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC3))) )) ) ; BUNBO7EXP4 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC4))) )) ) ; BUNBO7EXP5 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC5))) )) ) ; BUNBO7EXP6 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC7+(255-ERRLOC6))) )) ) ; BUNBO7EXP7 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC7))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC7))) )) ) ; printf("AYAMARIATAI[%d]=%x\n",ERRLOC1, GF256EXP2VEC(Y,ika254(SYNDSIGMA7EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,ERRLOC1) + (255-BUNBO7EXP)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC2, GF256EXP2VEC(Y,ika254(SYNDSIGMA7EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,ERRLOC2) + (255-BUNBO7EXP2)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC3, GF256EXP2VEC(Y,ika254(SYNDSIGMA7EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,ERRLOC3) + (255-BUNBO7EXP3)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC4, GF256EXP2VEC(Y,ika254(SYNDSIGMA7EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,ERRLOC4) + (255-BUNBO7EXP4)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC5, GF256EXP2VEC(Y,ika254(SYNDSIGMA7EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,ERRLOC5) + (255-BUNBO7EXP5)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC6, GF256EXP2VEC(Y,ika254(SYNDSIGMA7EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,ERRLOC6) + (255-BUNBO7EXP6)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC7, GF256EXP2VEC(Y,ika254(SYNDSIGMA7EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,RAW7EXP,ERRLOC7) + (255-BUNBO7EXP7)))); goto endend; // while(1); //6 block ayamari no baai ayamari6ika: AAE = VEC_DET6x6(S[6],S[5],S[4],S[3],S[2],S[1], S[7],S[6],S[5],S[4],S[3],S[2], S[8],S[7],S[6],S[5],S[4],S[3], S[9],S[8],S[7],S[6],S[5],S[4], S[10],S[9],S[8],S[7],S[6],S[5], S[11],S[10],S[9],S[8],S[7],S[6],Y); printf("AAE=%d\n",AAE); if(AAE==0){goto ayamari5ika;} RAW1BUNSHI = VEC_DET6x6(S[7],S[5],S[4],S[3],S[2],S[1], S[8],S[6],S[5],S[4],S[3],S[2], S[9],S[7],S[6],S[5],S[4],S[3] ,S[10],S[8],S[7],S[6],S[5],S[4] ,S[11],S[9],S[8],S[7],S[6],S[5] ,S[12],S[10],S[9],S[8],S[7],S[6],Y); RAW2BUNSHI = VEC_DET6x6(S[6],S[7],S[4],S[3],S[2],S[1], S[7],S[8],S[5],S[4],S[3],S[2], S[8],S[9],S[6],S[5],S[4],S[3] ,S[9],S[10],S[7],S[6],S[5],S[4] ,S[10],S[11],S[8],S[7],S[6],S[5] ,S[11],S[12],S[9],S[8],S[7],S[6],Y); RAW3BUNSHI = VEC_DET6x6(S[6],S[5],S[7],S[3],S[2],S[1], S[7],S[6],S[8],S[4],S[3],S[2], S[8],S[7],S[9],S[5],S[4],S[3] ,S[9],S[8],S[10],S[6],S[5],S[4] ,S[10],S[9],S[11],S[7],S[6],S[5] ,S[11],S[10],S[12],S[8],S[7],S[6],Y); RAW4BUNSHI = VEC_DET6x6(S[6],S[5],S[4],S[7],S[2],S[1], S[7],S[6],S[5],S[8],S[3],S[2], S[8],S[7],S[6],S[9],S[4],S[3] ,S[9],S[8],S[7],S[10],S[5],S[4] ,S[10],S[9],S[8],S[11],S[6],S[5] ,S[11],S[10],S[9],S[12],S[7],S[6],Y); RAW5BUNSHI = VEC_DET6x6(S[6],S[5],S[4],S[3],S[7],S[1], S[7],S[6],S[5],S[4],S[8],S[2], S[8],S[7],S[6],S[5],S[9],S[3] ,S[9],S[8],S[7],S[6],S[10],S[4] ,S[10],S[9],S[8],S[7],S[11],S[5] ,S[11],S[10],S[9],S[8],S[12],S[6],Y); RAW6BUNSHI = VEC_DET6x6(S[6],S[5],S[4],S[3],S[2],S[7], S[7],S[6],S[5],S[4],S[3],S[8], S[8],S[7],S[6],S[5],S[4],S[9] ,S[9],S[8],S[7],S[6],S[5],S[10] ,S[10],S[9],S[8],S[7],S[6],S[11] ,S[11],S[10],S[9],S[8],S[7],S[12],Y); RAW1EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW1BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAE))))); RAW2EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW2BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAE))))); RAW3EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW3BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAE))))); RAW4EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW4BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAE))))); RAW5EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW5BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAE))))); RAW6EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW6BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAE))))); ayamari6ko: RAW1EXP = GF256VEC2EXP(Y,SIGMA[1]); RAW2EXP = GF256VEC2EXP(Y,SIGMA[2]); RAW3EXP = GF256VEC2EXP(Y,SIGMA[3]); RAW4EXP = GF256VEC2EXP(Y,SIGMA[4]); RAW5EXP = GF256VEC2EXP(Y,SIGMA[5]); RAW6EXP = GF256VEC2EXP(Y,SIGMA[6]); for(i=0;i<255;i++){ CHEN[i] = (GF256EXP2VEC(Y,GF256MULT(RAW6EXP,(255-i)*6)) ^GF256EXP2VEC(Y,GF256MULT(RAW5EXP,(255-i)*5)) ^ GF256EXP2VEC(Y,GF256MULT(RAW4EXP,(255-i)*4)) ^ GF256EXP2VEC(Y,GF256MULT(RAW3EXP,(255-i)*3)) ^ GF256EXP2VEC(Y,GF256MULT(RAW2EXP,(255-i)*2)) ^ GF256EXP2VEC(Y,GF256MULT(RAW1EXP,255-i))); printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); } FLAG = 0; for(i=0,k=0;i<255;i++){ // printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); if(FLAG == 5 && CHEN[i] == 1){ ERRLOC6 = i;FLAG = 6; } if(FLAG == 4 && CHEN[i] == 1){ ERRLOC5 = i;FLAG = 5; } if(FLAG == 3 && CHEN[i] == 1){ ERRLOC4 = i;FLAG = 4; } if(FLAG == 2 && CHEN[i] == 1){ ERRLOC3 = i;FLAG = 3; } if(FLAG == 1 && CHEN[i] == 1){ ERRLOC2 = i;FLAG=2; } if(CHEN[i] == 1 && FLAG ==0 ){ ERRLOC1 = i;FLAG=1; } } printf("ERRLOC1=%d,ERRLOC2=%dERRLOC3=%dERRLOC4=%dERRLOC5=%dERRLOC6=%d\n",ERRLOC1,ERRLOC2,ERRLOC3,ERRLOC4,ERRLOC5,ERRLOC6); BUNBO6EXP = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC1))) )) ) ; BUNBO6EXP2 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC2))) )) ) ; BUNBO6EXP3 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC3))) )) ) ; BUNBO6EXP4 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC4))) )) ) ; BUNBO6EXP5 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC6+(255-ERRLOC5))) )) ) ; BUNBO6EXP6 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC6))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC6))) )) ) ; printf("AYAMARIATAI[%d]=%x\n",ERRLOC1, GF256EXP2VEC(Y,ika254(SYNDSIGMA6EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,ERRLOC1) + (255-BUNBO6EXP)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC2, GF256EXP2VEC(Y,ika254(SYNDSIGMA6EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,ERRLOC2) + (255-BUNBO6EXP2)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC3, GF256EXP2VEC(Y,ika254(SYNDSIGMA6EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,ERRLOC3) + (255-BUNBO6EXP3)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC4, GF256EXP2VEC(Y,ika254(SYNDSIGMA6EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,ERRLOC4) + (255-BUNBO6EXP4)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC5, GF256EXP2VEC(Y,ika254(SYNDSIGMA6EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,ERRLOC5) + (255-BUNBO6EXP5)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC6, GF256EXP2VEC(Y,ika254(SYNDSIGMA6EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,RAW6EXP,ERRLOC6) + (255-BUNBO6EXP6)))); goto endend; // while(1); //5 block ayamari no baai ayamari5ika: AAD = VEC_DET5x5(S[5],S[4],S[3],S[2],S[1], S[6],S[5],S[4],S[3],S[2], S[7],S[6],S[5],S[4],S[3], S[8],S[7],S[6],S[5],S[4], S[9],S[8],S[7],S[6],S[5],Y); printf("DET5x5=%d\n",AAD);//while(1); if(AAD == 0){goto ayamari4ika;} RAW1BUNSHI = VEC_DET5x5(S[6],S[4],S[3],S[2],S[1] ,S[7],S[5],S[4],S[3],S[2] ,S[8],S[6],S[5],S[4],S[3] ,S[9],S[7],S[6],S[5],S[4] ,S[10],S[8],S[7],S[6],S[5],Y); RAW2BUNSHI = VEC_DET5x5(S[5],S[6],S[3],S[2],S[1] ,S[6],S[7],S[4],S[3],S[2] ,S[7],S[8],S[5],S[4],S[3] ,S[8],S[9],S[6],S[5],S[4] ,S[9],S[10],S[7],S[6],S[5],Y); RAW3BUNSHI = VEC_DET5x5(S[5],S[4],S[6],S[2],S[1] ,S[6],S[5],S[7],S[3],S[2] ,S[7],S[6],S[8],S[4],S[3] ,S[8],S[7],S[9],S[5],S[4] ,S[9],S[8],S[10],S[6],S[5],Y); RAW4BUNSHI = VEC_DET5x5(S[5],S[4],S[3],S[6],S[1] ,S[6],S[5],S[4],S[7],S[2] ,S[7],S[6],S[5],S[8],S[3] ,S[8],S[7],S[6],S[9],S[4] ,S[9],S[8],S[7],S[10],S[5],Y); RAW5BUNSHI = VEC_DET5x5(S[5],S[4],S[3],S[2],S[6] ,S[6],S[5],S[4],S[3],S[7] ,S[7],S[6],S[5],S[4],S[8] ,S[8],S[7],S[6],S[5],S[9] ,S[9],S[8],S[7],S[6],S[10],Y); RAW1EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW1BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAD))))); RAW2EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW2BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAD))))); RAW3EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW3BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAD))))); RAW4EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW4BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAD))))); RAW5EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW5BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAD))))); ayamari5ko: RAW1EXP = GF256VEC2EXP(Y,SIGMA[1]); RAW2EXP = GF256VEC2EXP(Y,SIGMA[2]); RAW3EXP = GF256VEC2EXP(Y,SIGMA[3]); RAW4EXP = GF256VEC2EXP(Y,SIGMA[4]); RAW5EXP = GF256VEC2EXP(Y,SIGMA[5]); for(i=0;i<255;i++){ CHEN[i] = (GF256EXP2VEC(Y,GF256MULT(RAW5EXP,(255-i)*5)) ^ GF256EXP2VEC(Y,GF256MULT(RAW4EXP,(255-i)*4)) ^ GF256EXP2VEC(Y,GF256MULT(RAW3EXP,(255-i)*3)) ^ GF256EXP2VEC(Y,GF256MULT(RAW2EXP,(255-i)*2)) ^ GF256EXP2VEC(Y,GF256MULT(RAW1EXP,255-i))); printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); } FLAG = 0; for(i=0,k=0;i<255;i++){ // printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); if(FLAG == 4 && CHEN[i] == 1){ ERRLOC5 = i;FLAG = 5; } if(FLAG == 3 && CHEN[i] == 1){ ERRLOC4 = i;FLAG = 4; } if(FLAG == 2 && CHEN[i] == 1){ ERRLOC3 = i;FLAG = 3; } if(FLAG == 1 && CHEN[i] == 1){ ERRLOC2 = i;FLAG=2; } if(CHEN[i] == 1 && FLAG ==0 ){ ERRLOC1 = i;FLAG=1; } } printf("ERRLOC1=%d,ERRLOC2=%dERRLOC3=%dERRLOC4=%dERRLOC5=%d\n",ERRLOC1,ERRLOC2,ERRLOC3,ERRLOC4,ERRLOC5); BUNBO5EXP = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC1))) )) ) ; BUNBO5EXP2 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC2))) )) ) ; BUNBO5EXP3 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC3))) )) ) ; BUNBO5EXP4 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC5+(255-ERRLOC4))) )) ) ; BUNBO5EXP5 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC5))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC5))) )) ) ; printf("AYAMARIATAI[%d]=%x\n",ERRLOC1, GF256EXP2VEC(Y,ika254(SYNDSIGMA5EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,ERRLOC1) + (255-BUNBO5EXP)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC2, GF256EXP2VEC(Y,ika254(SYNDSIGMA5EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,ERRLOC2) + (255-BUNBO5EXP2)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC3, GF256EXP2VEC(Y,ika254(SYNDSIGMA5EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,ERRLOC3) + (255-BUNBO5EXP3)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC4, GF256EXP2VEC(Y,ika254(SYNDSIGMA5EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,ERRLOC4) + (255-BUNBO5EXP4)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC5, GF256EXP2VEC(Y,ika254(SYNDSIGMA5EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,RAW5EXP,ERRLOC5) + (255-BUNBO5EXP5)))); goto endend; //4 block ayamari no baai ayamari4ika: AAC = VEC_DET4x4(S[4],S[3],S[2],S[1] ,S[5],S[4],S[3],S[2] ,S[6],S[5],S[4],S[3] ,S[7],S[6],S[5],S[4],Y); // printf("DET4x4=%d\n",AAC); if(AAC == 0){goto ayamari3ika;} RAW1BUNSHI = VEC_DET4x4(S[5],S[3],S[2],S[1] ,S[6],S[4],S[3],S[2] ,S[7],S[5],S[4],S[3] ,S[8],S[6],S[5],S[4],Y); RAW2BUNSHI = VEC_DET4x4(S[4],S[5],S[2],S[1] ,S[5],S[6],S[3],S[2] ,S[6],S[7],S[4],S[3] ,S[7],S[8],S[5],S[4],Y); RAW3BUNSHI = VEC_DET4x4(S[4],S[3],S[5],S[1] ,S[5],S[4],S[6],S[2] ,S[6],S[5],S[7],S[3] ,S[7],S[6],S[8],S[4],Y); RAW4BUNSHI = VEC_DET4x4(S[4],S[3],S[2],S[5] ,S[5],S[4],S[3],S[6] ,S[6],S[5],S[4],S[7] ,S[7],S[6],S[5],S[8],Y); RAW1EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW1BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAC))))); RAW2EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW2BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAC))))); RAW3EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW3BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAC))))); RAW4EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW4BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAC))))); ayamari4ko: RAW1EXP = GF256VEC2EXP(Y,SIGMA[1]); RAW2EXP = GF256VEC2EXP(Y,SIGMA[2]); RAW3EXP = GF256VEC2EXP(Y,SIGMA[3]); RAW4EXP = GF256VEC2EXP(Y,SIGMA[4]); for(i=0;i<255;i++){ CHEN[i] = (GF256EXP2VEC(Y,GF256MULT(RAW4EXP,(255-i)*4)) ^ GF256EXP2VEC(Y,GF256MULT(RAW3EXP,(255-i)*3)) ^ GF256EXP2VEC(Y,GF256MULT(RAW2EXP,(255-i)*2)) ^ GF256EXP2VEC(Y,GF256MULT(RAW1EXP,255-i))); printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); } // int ERRLOC1,ERRLOC2,ERRLOC3,ERRLOC4; FLAG = 0; for(i=0,k=0;i<255;i++){ // printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); if(FLAG == 3 && CHEN[i] == 1){ ERRLOC4 = i;FLAG = 4; } if(FLAG == 2 && CHEN[i] == 1){ ERRLOC3 = i;FLAG = 3; } if(FLAG == 1 && CHEN[i] == 1){ ERRLOC2 = i;FLAG=2; } if(CHEN[i] == 1 && FLAG ==0 ){ ERRLOC1 = i;FLAG=1; } } printf("ERRLOC1=%d,ERRLOC2=%dERRLOC3=%dERRLOC4=%d\n",ERRLOC1,ERRLOC2,ERRLOC3,ERRLOC4); BUNBO4EXP = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC1))) )) ) ; BUNBO4EXP2 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC2))) )) ) ; BUNBO4EXP3 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC4+(255-ERRLOC3))) )) ) ; BUNBO4EXP4 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC4))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC4))) )) ) ; printf("AYAMARIATAI[%d]=%x\n",ERRLOC1, GF256EXP2VEC(Y,ika254(SYNDSIGMA4EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,ERRLOC1) + (255-BUNBO4EXP)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC2, GF256EXP2VEC(Y,ika254(SYNDSIGMA4EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,ERRLOC2) + (255-BUNBO4EXP2)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC3, GF256EXP2VEC(Y,ika254(SYNDSIGMA4EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,ERRLOC3) + (255-BUNBO4EXP3)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC4, GF256EXP2VEC(Y,ika254(SYNDSIGMA4EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,RAW4EXP,ERRLOC4) + (255-BUNBO4EXP4)))); //3 block ayamari no baai // int RAW1BUNSHI; // int RAW2BUNSHI; // int RAW3BUNSHI; goto endend; ayamari3ika: AAB = (GF256EXP2VEC(Y,(ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[3]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[5]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[1])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[4]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[1])+GF256VEC2EXP(Y,S[5]) ))) ); if(AAB == 0){goto ayamari2ika;} RAW1BUNSHI = (GF256EXP2VEC(Y,(ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[4]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[1])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[5]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[6]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[1])+GF256VEC2EXP(Y,S[6]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[4]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[5]) ))) ); RAW2BUNSHI = (GF256EXP2VEC(Y,(ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[5]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[1])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[6]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[5]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[1])+GF256VEC2EXP(Y,S[5])+GF256VEC2EXP(Y,S[5]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[6]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[4]) ))) ); RAW3BUNSHI = (GF256EXP2VEC(Y,(ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[6]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[4]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[5])+GF256VEC2EXP(Y,S[5]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[5]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[5]) ))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[6]) ))) ); RAW1EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW1BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAB))))); RAW2EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW2BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAB))))); RAW3EXP = ika254(GF256MULT(GF256VEC2EXP(Y,RAW3BUNSHI) ,(ika254(255-GF256VEC2EXP(Y,AAB))))); ayamari3ko: RAW1EXP = GF256VEC2EXP(Y,SIGMA[1]); RAW2EXP = GF256VEC2EXP(Y,SIGMA[2]); RAW3EXP = GF256VEC2EXP(Y,SIGMA[3]); for(i=0;i<255;i++){ CHEN[i] = (GF256EXP2VEC(Y,GF256MULT(RAW3EXP,(255-i)*3)) ^ GF256EXP2VEC(Y,GF256MULT(RAW2EXP,(255-i)*2)) ^ GF256EXP2VEC(Y,GF256MULT(RAW1EXP,255-i))); //printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); } FLAG = 0; for(i=0,k=0;i<255;i++){ // printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); if(FLAG == 2 && CHEN[i] == 1){ ERRLOC3 = i;FLAG = 3; } if(FLAG == 1 && CHEN[i] == 1){ ERRLOC2 = i;FLAG=2; } if(CHEN[i] == 1 && FLAG ==0 ){ ERRLOC1 = i;FLAG=1; } } printf("ERRLOC1=%d,ERRLOC2=%dERRLOC3=%d\n",ERRLOC1,ERRLOC2,ERRLOC3); BUNBO3EXP = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC1))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC1))) ))) ; BUNBO3EXP2 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC2))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC3+(255-ERRLOC2))) ))) ; BUNBO3EXP3 = ika254(GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC3))) )) + GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC3))) ))) ; // printf("2222222222\n"); printf("AYAMARIATAI[%d]=%x\n",ERRLOC1, GF256EXP2VEC(Y,ika254(SYNDSIGMA3EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,ERRLOC1) + (255-BUNBO3EXP)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC2, GF256EXP2VEC(Y,ika254(SYNDSIGMA3EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,ERRLOC2) + (255-BUNBO3EXP2)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC3, GF256EXP2VEC(Y,ika254(SYNDSIGMA3EXP(Y,S,RAW1EXP,RAW2EXP,RAW3EXP,ERRLOC3) + (255-BUNBO3EXP3)))); goto endend; //2 block ayamari no baai ayamari2ika: AAA = (GF256EXP2VEC(Y,(ika254(GF256VEC2EXP(Y,S[2])+GF256VEC2EXP(Y,S[2])))) ^ (GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[1]))))); if(AAA == 0){goto ayamari1ika;} RAW1EXP = ika254(GF256MULT(GF256VEC2EXP(Y,(GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[2]))) ^ GF256EXP2VEC(Y,(ika254(GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[1])))))) , (ika254(255-GF256VEC2EXP(Y,AAA))))); RAW2EXP = ika254(GF256MULT(GF256VEC2EXP(Y,(GF256EXP2VEC(Y,ika254(GF256VEC2EXP(Y,S[4])+GF256VEC2EXP(Y,S[2]))) ^ GF256EXP2VEC(Y,(ika254(GF256VEC2EXP(Y,S[3])+GF256VEC2EXP(Y,S[3])))))) , (ika254(255-GF256VEC2EXP(Y,AAA))))); RAW1HEX = GF256EXP2VEC(Y,RAW1EXP); RAW2HEX = GF256EXP2VEC(Y,RAW2EXP); printf("DET4x4=%xHEX\n",AAA); printf("RAW1EXP=%dEXP\n",RAW1EXP); printf("RAW2EXP=%dEXP\n",RAW2EXP); ayamari2ko: RAW1EXP = GF256VEC2EXP(Y,SIGMA[1]); RAW2EXP = GF256VEC2EXP(Y,SIGMA[2]); for(i=0;i<255;i++){ CHEN[i] = (GF256EXP2VEC(Y,GF256MULT(RAW2EXP,(255-i)*2)) ^ GF256EXP2VEC(Y,GF256MULT(RAW1EXP,255-i))); } FLAG=0; // int ERRLOC1,ERRLOC2; for(i=0,k=0;i<255;i++){ // printf("CHEN[%d]=%xHEX\n",i,CHEN[i]); if(FLAG == 1 && CHEN[i] == 1){ ERRLOC2 = i; } if(CHEN[i] == 1 && FLAG ==0 ){ ERRLOC1 = i;FLAG=1; } } printf("ERRLOC1 = %d,ERRLOC2 = %d\n",ERRLOC1,ERRLOC2); // SYNDSIGMA2EXP(Y,S,RAW1EXP,RAW2EXP,ERRLOC1) // int BUNBO2EXP,BUNBO2EXP2; // printf("1111111111\n"); BUNBO2EXP = GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC2+(255-ERRLOC1)) ))); BUNBO2EXP2 = GF256VEC2EXP2(Y,(1 ^ GF256EXP2VEC(Y, ika254(ERRLOC1+(255-ERRLOC2)) ))); // printf("2222222222\n"); printf("AYAMARIATAI[%d]=%x\n",ERRLOC1, GF256EXP2VEC(Y,ika254(SYNDSIGMA2EXP(Y,S,RAW1EXP,RAW2EXP,ERRLOC1) + (255-BUNBO2EXP)))); printf("AYAMARIATAI[%d]=%x\n",ERRLOC2, GF256EXP2VEC(Y,ika254(SYNDSIGMA2EXP(Y,S,RAW1EXP,RAW2EXP,ERRLOC2) + (255-BUNBO2EXP2)))); goto endend; //1 block ayamari no baai S1‚ªŒë‚è’l ayamari1ko:; ayamari1ika: if(S[1] == 0){printf("ERROR!!!!\n");goto endend;} //int RAW1EXP; RAW1EXP = ika254(GF256VEC2EXP2(Y,S[2])+(ika254(255-GF256VEC2EXP2(Y,S[1])))); printf("AYAMARIATAI[%d]=%x\n",RAW1EXP,S[1]); goto endend; ayamariiti = RAW1EXP; //ayamari suuti takousiki ayamari 1ko KARI2 = S[1]; // printf("S0=%xHEX\n",S[1]); // printf("S0=%dEXP\n",GF256VEC2EXP(Y,S[1])); // printf("S1=%dEXP\n",GF256VEC2EXP(Y,S[2])); // printf("S2=%dEXP\n",GF256VEC2EXP(Y,S[3])); // printf("S3=%dEXP\n",GF256VEC2EXP(Y,S[4])); // printf("S4=%dEXP\n",GF256VEC2EXP(Y,S[5])); // printf("S5=%dEXP\n",GF256VEC2EXP(Y,S[6])); // printf("S6=%dEXP\n",GF256VEC2EXP(Y,S[7])); // printf("S7=%dEXP\n",GF256VEC2EXP(Y,S[8])); // printf("S15=%dEXP\n",GF256VEC2EXP(Y,S[16])); //int DANKAI1,DANKAI2; for(i=0;i<15;i++){ DANKAI1 =((S[i+2]) ^ (GF256EXP2VEC(Y,ika254(RAW1EXP+GF256VEC2EXP(Y,S[i+1]))))); if(DANKAI1 == 0){ ; } else { DANKAI2=GF256EXP2VEC(Y, ika254( GF256VEC2EXP(Y, ((S[i+2]) ^ (GF256EXP2VEC(Y,ika254(RAW1EXP+GF256VEC2EXP(Y,S[i+1]))))) ) + (255-ayamariiti)*(i+1) ) ); //if((DANKAI2 ^ KARI2) == 0){ // KARI2 = 0; //} else { KARI2 = (DANKAI2 ^ KARI2); //} } printf("i=%d,KEIKA=%dEXP\n",i,GF256VEC2EXP(Y,KARI2)); } printf("ayamariiti=%d\n",ayamariiti); printf("KARI2=%xHEX\n",KARI2); printf("RAW1*S15*X^16=%xHEX\n",(GF256EXP2VEC(Y,ika254(RAW1EXP+GF256VEC2EXP(Y,S[16])+(255-ayamariiti)*16)) )); KARI2 = (KARI2 ^ (GF256EXP2VEC(Y,ika254(RAW1EXP+GF256VEC2EXP(Y,S[16])+(255-ayamariiti)*16)) )); //int KARI3; KARI3=GF256EXP2VEC(Y,(ika254(GF256VEC2EXP(Y,KARI2)+(255-RAW1EXP)))); printf("ayamariatai32block=%x\n",KARI3); //int **MAT; MAT = (int**)malloc(sizeof(int*)*8); for(i=0;i<8;i++){ MAT[i] = (int*)malloc(sizeof(int)*8); } for(i=0;i<8;i++){ for(j=0;j<8;j++){ MAT[i][j] = 8*i+j; } } for(i=0;i<8;i++){ for(j=0;j<8;j++){ //printf("MAT[%d][%d]=%d\n",i,j,MAT[i][j]); } } //8 block ayamari ayamari block detect endend: //fclose(fpr); return 0; }