]> AND Private Git Repository - Cipher_code.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
test substi
authorRaphaël Couturier <raphael.couturier@univ-fcomte.fr>
Mon, 29 Jul 2019 09:58:01 +0000 (11:58 +0200)
committerRaphaël Couturier <raphael.couturier@univ-fcomte.fr>
Mon, 29 Jul 2019 09:58:01 +0000 (11:58 +0200)
OneRoundIoT/EnhancedOneRound/Makefile
OneRoundIoT/EnhancedOneRound/test_substitution.cpp [new file with mode: 0644]

index da280aface8a70f55eef8e013f3b25f8a524bd9c..59e7fc178b24ede0a89f2dfccf58d08ba63736ce 100644 (file)
@@ -24,5 +24,8 @@ enhanced_oneround: pixmap_io.o enhanced_oneround.o
        $(CXX)  -o $@ $^ $(CFLAGS)
 
 
+test_substitution: test_substitution.o
+       $(CXX)  -o $@ $^ $(CFLAGS)      
+
 clean:
        rm -rf *.o enhanced_oneround
diff --git a/OneRoundIoT/EnhancedOneRound/test_substitution.cpp b/OneRoundIoT/EnhancedOneRound/test_substitution.cpp
new file mode 100644 (file)
index 0000000..48ea63f
--- /dev/null
@@ -0,0 +1,249 @@
+//gcc pixmap_io.c  -c 
+//g++ -O3 one_round_new.cpp pixmap_io.o  -o one_round_new -std=c++11   
+
+#include <iostream>
+#include <list>
+#include<math.h>
+#include<stdlib.h>
+#include<stdio.h>
+#include<string.h>
+#include <fstream>
+#include <sys/time.h>
+
+using namespace std;
+
+
+int key_size=256;
+int nb_test=1;
+int cbcprng=0;
+int cbcrm=0;
+int ecbrm=0;
+int ecbprng=0;
+
+
+
+typedef __uint64_t mylong;
+
+
+typedef unsigned char   uchar;
+
+
+double TimeStart()
+{
+  struct timeval tstart;
+  gettimeofday(&tstart,0);
+  return( (double) (tstart.tv_sec + tstart.tv_usec*1e-6) );
+}
+
+double TimeStop(double t)
+{
+  struct timeval tend;
+
+  gettimeofday(&tend,0);
+  t = (double) (tend.tv_sec + tend.tv_usec*1e-6) - t;
+  return (t);
+}
+
+
+
+
+uint xorshift32(const uint t)
+{
+  /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */
+  uint x = t;
+  x ^= x << 13;
+  x ^= x >> 17;
+  x ^= x << 5;
+  return x;
+}
+
+
+mylong xorseed;
+
+mylong xorshift64()
+{
+        /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */
+        mylong x = xorseed;
+        x ^= x >> 12; // a
+        x ^= x << 25; // b
+        x ^= x >> 27; // c
+
+
+        return xorseed=x;
+}
+
+/*
+__uint128_t g_lehmer64_state;
+
+inline uint64_t splitmix64_stateless(uint64_t index) {
+  uint64_t z = (index + UINT64_C(0x9E3779B97F4A7C15));
+  z = (z ^ (z >> 30)) * UINT64_C(0xBF58476D1CE4E5B9);
+  z = (z ^ (z >> 27)) * UINT64_C(0x94D049BB133111EB);
+  return z ^ (z >> 31);
+}
+
+
+inline void lehmer64_seed(uint64_t seed) {
+  g_lehmer64_state = (((__uint128_t)splitmix64_stateless(seed)) << 64) +
+                     splitmix64_stateless(seed + 1);
+}
+
+inline uint64_t lehmer64() {
+  g_lehmer64_state *= UINT64_C(0xda942042e4dd58b5);
+  ;
+  return g_lehmer64_state >> 64;
+}
+
+*/
+
+
+
+void inverse_tables(uchar *tab, int size_tab,uchar *inv_perm_tabs) {
+
+  for(int i=0;i<size_tab;i++) {
+    inv_perm_tabs[tab[i]] = i;
+  }
+
+}
+
+void inverse_tables_int(int *tab, int size_tab,int *inv_perm_tabs) {
+
+  for(int i=0;i<size_tab;i++) {
+    inv_perm_tabs[tab[i]] = i;
+  }
+
+}
+
+
+
+void rc4key(uchar *key, uchar *sc, int size_DK) {
+
+  for(int i=0;i<256;i++) {
+    sc[i]=i;
+  }
+
+
+  uchar j0 = 0;
+  for(int i0=0; i0<256; i0++) {
+    j0 = (j0 + sc[i0] + key[i0%size_DK] )&0xFF;
+    uchar tmp = sc[i0];
+    sc[i0] = sc[j0 ];
+    sc[j0] = tmp;
+  }
+}
+
+
+
+void rc4keyperm(uchar *key,int len, int rp,int *sc, int size_DK) {
+
+  //sc=1:len;
+
+
+  
+  for (int i=0;i<len;i++) {
+    sc[i]=i;
+  }
+  for (int it = 0; it < rp; it++) {
+    int j0 = 1;
+    for(int i0 = 0; i0<len; i0++) {
+      j0 = (j0 + sc[i0] + sc[j0] + key[i0%size_DK] )% len;
+      int tmp = sc[i0];
+      sc[i0] = sc[j0];
+      sc[j0] = tmp;
+    }
+
+  }
+}
+
+void prga(uchar *sc, int ldata, uchar *r) {
+  uchar i0=0;
+  uchar j0=0;
+
+  for (int it=0; it<ldata; it++) {
+    i0 = ((i0+1)%255);
+    j0 = (j0 + sc[i0])&0xFF;
+    uchar tmp = sc[i0];
+    sc[i0] = sc[j0];
+    sc[j0] = tmp;
+    r[it]=sc[(sc[i0]+sc[j0])&0xFF];
+  }
+}
+
+
+
+
+
+
+
+
+int main(int argc, char** argv) {
+
+  int nb_test=100000;
+      
+  int seed=time(NULL);
+
+  srand48(seed);
+
+  uchar Secretkey[key_size];
+
+  uchar counter[key_size];
+
+
+  int size = 128;
+  uchar DK[size];
+  
+  for(int i=0;i<key_size;i++) {
+    DK[i]=lrand48()&0xFF;
+  }
+
+  
+
+
+
+
+
+
+
+
+  uchar Sbox1[256];
+  uchar Sbox2[256];  
+  uchar Temp[256];
+
+
+  double time=0;
+  
+
+  rc4key(DK, Sbox1, 8);
+  
+  
+  rc4key(&DK[8], Sbox2, 8);
+
+  double t=TimeStart();  
+
+
+  
+  for(int nb=0;nb<nb_test;nb++) {
+
+    for(int i=0;i<256;i++) {
+      Temp[i]=Sbox1[i];
+    }
+
+    for(int i=0;i<256;i++) {
+      Sbox1[i]=Sbox1[Sbox2[i]];
+    }
+
+    for(int i=0;i<256;i++) {
+      Sbox2[i]=Sbox2[Temp[i]];
+    }
+    
+  
+  }
+
+  time+=TimeStop(t);
+  cout<<"Time sub nb times "<<nb_test<<"   = "<<time<<endl;
+
+
+
+  return 0;
+}