u8 *new[DES_SUBKEY_LEN/8];
memset(new,0,DES_SUBKEY_LEN/8];
for(i=0;i<DES_SUBKEY_LEN;i++)
- new[i/8]|=(key[key_perm_table[i]/8]>>((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;
}