X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/Cipher_code.git/blobdiff_plain/f468314fbb129d22a901c316d2276d25923c9f47..8d1fcf81c437856befb3c4d31fcb6afce6a8f6ca:/OneRoundIoT/EnhancedOneRound/enhanced_oneround.cpp diff --git a/OneRoundIoT/EnhancedOneRound/enhanced_oneround.cpp b/OneRoundIoT/EnhancedOneRound/enhanced_oneround.cpp index 22a7a90..1b2980c 100644 --- a/OneRoundIoT/EnhancedOneRound/enhanced_oneround.cpp +++ b/OneRoundIoT/EnhancedOneRound/enhanced_oneround.cpp @@ -38,7 +38,7 @@ int ecbprng=0; - +typedef __uint64_t mylong; typedef unsigned char uchar; @@ -73,18 +73,22 @@ uint xorshift32(const uint t) return x; } -ulong xorshift64(ulong t) + +mylong xorseed; + +mylong xorshift64() { /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */ - ulong x = t; + mylong x = xorseed; x ^= x >> 12; // a x ^= x << 25; // b x ^= x >> 27; // c - return x; + return xorseed=x; } +/* __uint128_t g_lehmer64_state; inline uint64_t splitmix64_stateless(uint64_t index) { @@ -106,7 +110,7 @@ inline uint64_t lehmer64() { return g_lehmer64_state >> 64; } - +*/ @@ -187,17 +191,19 @@ void prga(uchar *sc, int ldata, uchar *r) { template -void encrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbox, int *PboxSRM, uchar *Sbox1, uchar *Sbox2, ulong myrand, int debug) { +void encrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbox, int *PboxSRM, uchar *Sbox1, uchar *Sbox2, mylong myrand, int debug) { uchar X[h]; uchar Y[h]; uchar fX[h]; uchar gY[h]; - uchar RM1[h]; - uchar RM2[h]; + uchar *RM1=&RM[0]; + uchar *RM2=&RM[h]; uchar tmp[h]; - ulong *rm1=(ulong*)RM1; - ulong *rm2=(ulong*)RM2; + mylong *rm1=(mylong*)RM1; + mylong *rm2=(mylong*)RM2; + + for(int it=0;it>3);a++) { - myrand=lehmer64(); + myrand=xorshift64(); rm1[a]=myrand; - myrand=lehmer64(); + myrand=xorshift64(); rm2[a]=myrand; } @@ -313,7 +319,7 @@ void encrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbo template -void decrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pbox, int *PboxSRM, uchar *Sbox1, uchar *Sbox2, uchar *Inv_Sbox1, uchar *Inv_Sbox2, ulong myrand, int debug) { +void decrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pbox, int *PboxSRM, uchar *Sbox1, uchar *Sbox2, uchar *Inv_Sbox1, uchar *Inv_Sbox2, mylong myrand, int debug) { uchar invfX[h]; uchar invgY[h]; @@ -322,8 +328,9 @@ void decrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pb uchar RM1[h]; uchar RM2[h]; uchar tmp[h]; - ulong *rm1=(ulong*)RM1; - ulong *rm2=(ulong*)RM2; + mylong *rm1=(mylong*)RM1; + mylong *rm2=(mylong*)RM2; + for(int it=0;it>3);a++) { - myrand=lehmer64(); + myrand=xorshift64(); rm1[a]=myrand; - myrand=lehmer64(); + myrand=xorshift64(); rm2[a]=myrand; } @@ -439,7 +446,7 @@ void decrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pb template -void encrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbox, int *PboxSRM, uchar *Sbox1, uchar *Sbox2, ulong myrand, int debug) { +void encrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbox, int *PboxSRM, uchar *Sbox1, uchar *Sbox2, mylong myrand, int debug) { uchar X[h]; uchar Y[h]; @@ -448,8 +455,8 @@ void encrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbox, uchar RM1[h]; uchar RM2[h]; uchar tmp[h]; - ulong *rm1=(ulong*)RM1; - ulong *rm2=(ulong*)RM2; + mylong *rm1=(mylong*)RM1; + mylong *rm2=(mylong*)RM2; for(int it=0;it>3);a++) { - myrand=lehmer64(); + myrand=xorshift64(); rm1[a]=myrand; - myrand=lehmer64(); + myrand=xorshift64(); rm2[a]=myrand; } @@ -565,7 +572,7 @@ void encrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbox, template -void decrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pbox, int *PboxSRM, uchar *Sbox1, uchar *Sbox2, uchar *Inv_Sbox1, uchar *Inv_Sbox2, ulong myrand, int debug) { +void decrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pbox, int *PboxSRM, uchar *Sbox1, uchar *Sbox2, uchar *Inv_Sbox1, uchar *Inv_Sbox2, mylong myrand, int debug) { uchar invfX[h]; uchar invgY[h]; @@ -574,8 +581,8 @@ void decrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pbox uchar RM1[h]; uchar RM2[h]; uchar tmp[h]; - ulong *rm1=(ulong*)RM1; - ulong *rm2=(ulong*)RM2; + mylong *rm1=(mylong*)RM1; + mylong *rm2=(mylong*)RM2; for(int it=0;it>3);a++) { - myrand=lehmer64(); + myrand=xorshift64(); rm1[a]=myrand; - myrand=lehmer64(); + myrand=xorshift64(); rm2[a]=myrand; } @@ -858,11 +865,14 @@ void encrypt_cbc_prng(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbo uchar gY[h]; uchar IV1[h]; uchar IV2[h]; - uchar RM1[h]; - uchar RM2[h]; + uchar *RM1=&RM[0]; + uchar *RM2=&RM[h]; uchar tmp[h]; - ulong *rm1=(ulong*)RM1; - ulong *rm2=(ulong*)RM2; + mylong *rm1=(mylong*)RM1; + mylong *rm2=(mylong*)RM2; + + + for(int it=0;it>3);a++) { - myrand=lehmer64(); + myrand=xorshift64(); rm1[a]=myrand; - myrand=lehmer64(); + myrand=xorshift64(); rm2[a]=myrand; } @@ -1027,11 +1037,13 @@ void decrypt_cbc_prng(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pb uchar gY[h]; uchar IV1[h]; uchar IV2[h]; - uchar RM1[h]; - uchar RM2[h]; + uchar *RM1=&RM[0]; + uchar *RM2=&RM[h]; +// uchar RM1[h]; +// uchar RM2[h]; uchar tmp[h]; - ulong *rm1=(ulong*)RM1; - ulong *rm2=(ulong*)RM2; + mylong *rm1=(mylong*)RM1; + mylong *rm2=(mylong*)RM2; for(int it=0;it>3);a++) { - myrand=lehmer64(); + myrand=xorshift64(); rm1[a]=myrand; - myrand=lehmer64(); + myrand=xorshift64(); rm2[a]=myrand; } @@ -1898,7 +1910,7 @@ int main(int argc, char** argv) { uchar RM[h*h*2+256]; uchar IV[2*h]; - ulong myrand=0; + mylong myrand=0; double time_encrypt=0; @@ -1958,8 +1970,8 @@ int main(int argc, char** argv) { inverse_tables(Sbox2,256,Inv_Sbox2); - - lehmer64_seed(myrand); + xorseed=myrand; +// lehmer64_seed(myrand); time_encrypt=0; t=TimeStart(); @@ -2074,8 +2086,9 @@ int main(int argc, char** argv) { store_RGB_pixmap("lena2.ppm", data_R, data_G, data_B, width, height); } - - lehmer64_seed(myrand); + + xorseed=myrand; + // lehmer64_seed(myrand); time_decrypt=0; t=TimeStart(); switch(h) { @@ -2189,6 +2202,5 @@ int main(int argc, char** argv) { } - return 0; }