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<DES_SUBKEY_LEN;i++)
- new[i]=key[key_perm_table[i]];
+ new[i/8]|=(key[key_perm_table[i]/8]>>((8-key_perm_table[i]%8)%8);
memcpy(key,new,DES_SUBKEY_LEN);
return 1;
}
return 1;
}
+int fuckup_data(u8 *key,int round,u8 *plain,u8 *crypted) {
+ u8 permc[DES_PERMC_LEN];
+ int i;
+ for(i=0;i<DES_PERMC_LEN;i++)
+ permc[i]=key[subkey_perm_table[i]];
+
+ return 1;
+}
+
int des_crypt(u8 *plain,u8 *crypted,u8 *key) {
int round;
key_perm(key);
for(round=0;round<DES_ROUND;round++) {
subkey_trans(key,round);
- // fuckup_data(key,round);
+ // fuckup_data(key,round,plain,crypted);
}
return 1;