排列码n=4源程序文件(实现语言C++)

2018-11-17 21:36

排列码加密解密方法及其加密解密器具有5大特征:

1.加密强度极高 比世界最先进的AES高出10的5千多次方倍

2.加密速度极快 仅几级门电路的延迟,7.5ns内完成1个分组的加密 3.设备量极少 比51单片机更简单 4.算法极多 有(n!)!个

5.使用灵活 分组长度可以是任意整数

●可用于制作CDMA加密手机 一只西门子的GSM加密手机售价高达3000美圆,我们制作比他技术指标更高的CDMA加密手机,只需增加开发成本,生产成本并不增加多少。目前,我国部队不允许使用手机,就是因为没有加密强度高的加密手机。我们已有可以监控或不可以监控不能窃听的加密手机方案。

●同样可以制作具有加密功能的有线电话和无绳电话、步谈机、传真机。

●可以制作既防外部黑客又防外部病毒攻击的国际互联内部网。目前信息共享已解决很好,但信息私有没有很好的解决方案。我们极多的算法,提供了解决这一方案的可行性。

排列码运算用的除法器

《一种快速除法器》 已经公开 专利申请号:03144205.6

《 第二种除数是15×2^n的快速除法器》 专利申请号:200310107543.5 还有申请国际专利的机会

除法器的共有特征是:利用特殊运算实现运算速度特别快,而设备量又特别小。在要求运算速度特别快的特殊场合有不可替代的作用。

// hHHH.cpp : Defines the entry point for the console application. //

//c++实现的排列码源程序

//在visual studio 2008中实现

#include \#include #include using namespace std;

//函数声明

char rhl(char);//循环右移函数

int reverse(int); //按位取反函数 void encode(); //加密函数 void decode(); //解密函数

int a[8],c[8],d[16],e[8],f[4],t[32],p[32],w[32],remainder,q; char bite0,bite1,bite4,bite5;

unsigned char key0[4],key1[4],key[4],r;

//主函数 int main() {

char file_name1[200],file_name2[200],file_name3[200],file_name4[200]; int i,j,k,choose,zijie2=0,zijie3=0,a1=0,a2=0,a3=0,a4=0; while(true){ //输出提示信息

cout<<\请选择您要的操作:---------\<

cout<<\解密文件请按键;\<

cout<<\; cout<<\; //cin>>choose; choose=1; //加密过程 if(choose== 1) {

cout<<\输入要加密的文件名称及其路径:\<>file_name1;

cout<<\加密后要保存的文件名称及其路径:\<>file_name2;

ifstream fs0(file_name1,ios::binary); if(!fs0) {

cout<<\文件打开失败!\<

ofstream fs1(file_name2,ios::binary); if(!fs1) {

cout<<\文件打开失败!\<

cout<<\输入您的位密钥\<>key0; r=key0[0];

key0[0]=key0[3]; key0[3]=r; r=key0[1];

key0[1]=key0[2]; key0[2]=r;

while(fs0.get(bite0)) { unsigned char gg; for(i=0;i<8;i++) {

c[i]=bite0&1;//c[i]存明文 bite0=bite0>>1; } for(k=0;k<4;k++) key[k]=key0[k];//用于保存密钥

//模取余

remainder=key[2]$;//key0[2]用于选行 //看哪一路径需要取反,前八条路径 gg=key[0];

for(j=0;j<8;j++) {

d[j]=gg&1; gg=gg>>1;

}

//后八条路径 gg=key[1];

for(j=8;j<16;j++) {

d[j]=gg&1; gg=gg>>1; }

encode();//低四位加密 //以下是密钥的变化 for(j=0;j<8;j++){ w[j]=key[0]&1; key[0]=key[0]>>1; w[j+8]=key[1]&1; key[1]=key[1]>>1; w[j+16]=key[2]&1; key[2]=key[2]>>1; w[j+24]=key[3]&1; key[3]=key[3]>>1; } for(j=0;j<4;j++){ w[j]=w[j]^1; w[j+8]=w[j+8]^1; w[j+16]=w[j+16]^1; w[j+24]=w[j+24]^1; }//密钥n位求非n位不求非 for(j=0;j<28;j++){ w[31-j]=w[27-j]; } for(j=0;j<4;j++) w[j]=c[j]; for(j=0;j<8;j++){ p[j]=key0[0]&1; key0[0]=rhl(key0[0]); p[j+8]=key0[1]&1; key0[1]=rhl(key0[1]); p[j+16]=key0[2]&1; key0[2]=rhl(key0[2]); p[j+24]=key0[3]&1; key0[3]=rhl(key0[3]); } q=1; for(j=0;j<32;j++){ if(p[j]==1&&w[j]==1&&q==1){w[j]=1;q=1;} else if(p[j]==1&&w[j]==1&&q==0){w[j]=0;q=1;} else if(p[j]==0&&w[j]==0){w[j]=q;q=0;} else if(w[j]!=p[j]&&q==1){w[j]=0;q=1;} else{w[j]=1;q=0;} } for(j=0;j<8;j++){ t[7-j]=w[31-j]; } for(j=0;j<24;j++){ w[31-j]=w[23-j];

} for(j=0;j<8;j++) w[7-j]=t[7-j]; a1=a2=a3=a4=0; for(j=7;j>=0;j--){ a1=a1<<1; a1=a1|w[j]; a2=a2<<1; a2=a2|w[j+8]; a3=a3<<1; a3=a3|w[j+16]; a4=a4<<1; a4=a4|w[j+24]; } key0[0]=a1;key0[1]=a2;key0[2]=a3;key0[3]=a4;

for(j=0;j<4;j++)

e[j]=a[j];//a[i]存中间加密结果,e[i]存密文 for(j=0;j<4;j++) c[j]=e[j];

for(j=7;j>=0;j--) {

zijie2=zijie2<<1; zijie2=zijie2|c[j]; }

bite4=char(zijie2); fs1.put(bite4); }

fs0.close(); fs1.close();

//cout<<\ }

//解密过程 if (choose==2) {

cout<<\输入要解密的文件名称及其路径:\<>file_name3;

cout<<\解密后要保存的文件名称及其路径:\<>file_name4;

ifstream fs2(file_name3,ios::binary); if(!fs2) {

cout<<\文件打开失败!\<

ofstream fs3(file_name4,ios::binary); if(!fs3) {

cout<<\文件打开失败!\<

cout<<\输入您的位解密密钥(与加密密钥相同):\<>key0; r=key0[0];

key0[0]=key0[3]; key0[3]=r; r=key0[1];

key0[1]=key0[2]; key0[2]=r;

//cout<<\ while(fs2.get(bite1)) { char gg;

for(i=0;i<8;i++) {

a[i]=bite1&1; bite1=bite1>>1; }

for(k=0;k<4;k++) key[k]=key0[k];//用于保存密钥

//模取余

remainder=key[2]$;

//看哪一路径需要取反,前八条路径 gg=key[0];

for(j=0;j<8;j++) {

d[j]=gg&1; gg=gg>>1; }

//后八条路径 gg=key[1];

for(j=8;j<16;j++) {

d[j]=gg&1; gg=gg>>1; }

decode(); //以下是密钥的变化 for(j=0;j<8;j++){ w[j]=key[0]&1; key[0]=key[0]>>1; w[j+8]=key[1]&1; key[1]=key[1]>>1; w[j+16]=key[2]&1; key[2]=key[2]>>1; w[j+24]=key[3]&1; key[3]=key[3]>>1; } for(j=0;j<4;j++){ w[j]=w[j]^1; w[j+8]=w[j+8]^1; w[j+16]=w[j+16]^1; w[j+24]=w[j+24]^1;


排列码n=4源程序文件(实现语言C++).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年内蒙古继续教育97分答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: