X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Fcrypto.git;a=blobdiff_plain;f=des.c;h=db0aba84e072ca4aef5b391d4a4a71d36f5309f8;hp=29cfa9426412e259a31037eed5ba5235a436085d;hb=9d84dd2104da5556056f6f9fd53dfcbd672d8f8a;hpb=324bac8319d6f902630b109a7ca50b3a28fa5330 diff --git a/des.c b/des.c index 29cfa94..db0aba8 100644 --- a/des.c +++ b/des.c @@ -27,16 +27,16 @@ 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; } @@ -45,7 +45,7 @@ key_perm(u8 *key) { u8 *new[DES_SUBKEY_LEN/8]; memset(new,0,DES_SUBKEY_LEN/8]; for(i=0;i>((8-key_perm_table[i]%8)%8); + new[i/8]|=(((key[(key_perm_table[i]-1)/8)]>>((8-key_perm_table[i]%8)&7))&1)<<(7-i%8)); memcpy(key,new,DES_SUBKEY_LEN); return 1; } @@ -53,17 +53,19 @@ 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; }