projects
/
my-code
/
crypto.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
-
[my-code/crypto.git]
/
des.c
diff --git
a/des.c
b/des.c
index
29cfa94
..
db0aba8
100644
(file)
--- 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];
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];
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<len-1;i++) obj[i]=obj[i]<<1|(obj[j+1]>>7)
;
+ obj[len-1]=
obj[len-1]<<1|(tmp>>7)
;
return 1;
}
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<DES_SUBKEY_LEN;i++)
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;
}
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<rot_per_round_table[round];i++) {
int subkey_trans(u8 *key,int round) {
int i;
for(i=0;i<rot_per_round_table[round];i++) {
- rotate_left(key,DES_SUBKEY_LEN/
2
);
- rotate_left(key+DES_SUBKEY_LEN/
2,DES_SUBKEY_LEN/2
);
+ rotate_left(key,DES_SUBKEY_LEN/
(8*2)
);
+ rotate_left(key+DES_SUBKEY_LEN/
(8*2),DES_SUBKEY_LEN/(8*2)
);
}
return 1;
}
}
return 1;
}
-int fuckup_data(u8 *key,int round,u8 *plain,u8 *crypted) {
+int fuckup_data
_block
(u8 *key,int round,u8 *plain,u8 *crypted) {
u8 permc[DES_PERMC_LEN];
int i;
u8 permc[DES_PERMC_LEN];
int i;
+ memset(permc,0,DES_PERMC_LEN/8);
for(i=0;i<DES_PERMC_LEN;i++)
for(i=0;i<DES_PERMC_LEN;i++)
- permc[i]=key[subkey_perm_table[i]];
+ permc[i/8]|=(((key[(subkey_perm_table[i]-1)/8]>>((8-subkey_perm_table[i]%8)&7)&1))<<(7-i%8));
+
return 1;
}
return 1;
}