X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Fcrypto.git;a=blobdiff_plain;f=des.c;h=db0aba84e072ca4aef5b391d4a4a71d36f5309f8;hp=a1cdbba52391aa001670cf65ad875f3fb1a2863d;hb=9d84dd2104da5556056f6f9fd53dfcbd672d8f8a;hpb=d32e0f70032fdc8d2f0d5a668556ba7f5cf4d26d diff --git a/des.c b/des.c index a1cdbba..db0aba8 100644 --- a/des.c +++ b/des.c @@ -27,24 +27,25 @@ u8 subkey_perm_table[DES_PERMC_LEN]={ int rotate_right(u8 *obj,int len) { u8 tmp=obj[len-1]; - while(--len) obj[len]=obj[len-1]; - obj[0]=tmp; + while(--len) obj[len]=obj[len]>>1|((obj[len-1]&1)<<7); + obj[0]=obj[0]>>1|((tmp&1)<<7);; return 1; } int rotate_left(u8 *obj,int len) { int i=0; u8 tmp=obj[0]; - while(len-(i++)) obj[i-1]=obj[i]; - obj[len-1]=tmp; + for(i=0;i>7); + obj[len-1]=obj[len-1]<<1|(tmp>>7); return 1; } key_perm(u8 *key) { int i; - u8 *new[DES_SUBKEY_LEN]; + u8 *new[DES_SUBKEY_LEN/8]; + memset(new,0,DES_SUBKEY_LEN/8]; for(i=0;i>((8-key_perm_table[i]%8)&7))&1)<<(7-i%8)); memcpy(key,new,DES_SUBKEY_LEN); return 1; } @@ -52,19 +53,30 @@ key_perm(u8 *key) { int subkey_trans(u8 *key,int round) { int i; for(i=0;i>((8-subkey_perm_table[i]%8)&7)&1))<<(7-i%8)); + + + return 1; +} + int des_crypt(u8 *plain,u8 *crypted,u8 *key) { int round; key_perm(key); for(round=0;round