📄 des3rmain.cpp
字号:
/* des3rmain.cpp *//* Implementacija linearne kriptoanalize DES-a od 3 runde *//* 2005. godina *//* Autor: Darko Poljak */#include <iostream>#include <cstdio>#include "DES3r.h"#include "des3rla.h"using namespace std;void usage(const char *s){ fprintf(stderr,"usage: %s [-n PLAINCNT] [-v]\n" " -n PLAINCNT = number of plaintexts\n" " -h = print this help\n" " Default number of plaintexts is 50.\n\n",s);}/* K1[22], K3[22] */extern bit k1_22;extern bit k3_22; main(int argc, char **argv){ string key; /* stvarni kkljuc */ int ptxtcnt=50; /* potreban broj poznatih otvorenih tekstova */ bit lexpr_rhs; /* desna strana linearnog izraza */ float p=0.70f; /* vjerojatnost da linearni izraz vrijedi */ int i,j; for(i=1;i<argc;++i) { if(strcmp(argv[i],"-n")==0) { ++i; ptxtcnt=atoi(argv[i]); } else if(strcmp(argv[i],"-h")==0) { usage(argv[0]); exit(0); } else { cerr<<"Unknown argument \""<<argv[i]<<"\"!"<<endl <<"Type \'"<<argv[0]<<" -h\' for help."<<endl; exit(1); } } analysis_init(&key); /* generiranje slucajnog kljuca */ /* 3-round DES linearna analiza */ lexpr_rhs=lin_analysis_DES_1bit(gen_texts3r,ptxtcnt,key,p); printf("Real Key:\n"); for(i=0;i<64;++i) { printf("%3d",63-i); } printf("\n"); for(i=0;i<8;++i) { for(j=7;j>=0;--j) { printf("%3d",(key[i]>>j)&0x1); } } printf("\n\nReal bits K1[22] = %d; K3[22] = %d\n",k1_22,k3_22); printf("\n\n3-round DES linear analysis (1 key bit) result:\n" "Pl[15] xor Ph[7,18,24,29] xor Cl[15] xor Ch[7,18,24,29] = " "K1[22] xor K3[22] = %d\n",lexpr_rhs); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -