#include "iostream.h"
int main()
{
void encrupt(char *,int *,int);
void decrupt(char *,int *,int);
cout<<"置换密码演示"<<endl;
int n,p;
cout<<"输入密钥长度:";
cin>>n;
int *key=new int[n];
cout<<"输入密钥:";
for(int i=0;i<n;i++)
cin>>key[i];
int *keyni=new int[n];
for(i=0;i<n;i++)
keyni[key[i]-1]=i+1;
while(true)
{
cout<<"如果加密,输入1;如果解密,输入2;否则输入其它数:";
cin>>p;
if(p!=1 && p!=2)
return 0;
char message[50];
if(p==1)
cout<<"输入明文:";
else cout<<"输入密文:";
cin>>message;
for(i=0;message[i]!=0;i++);
while(i%n!=0)
message[i++]='?';
message[i]=0;
if(p==1)
encrupt(message,key,n);
else
decrupt(message,keyni,n);
}
delete []key;
delete []keyni;
return 0;
}
void encrupt(char *message,int *key,int n)
{
char transmit[50],k;
int j=0;
for(int i=0;message[i]!=0;i++)
{
k=message[key[i%n]-1+i/n*n];
if(k=='?') continue;
else transmit[j++]=k;
}
transmit[j]=0;
cout<<"密文为: "<<transmit<<endl;
}
void decrupt(char *message,int *keyni,int n)
{
char transmit[50],k;
int j=0;
for(int i=0;message[i]!=0;i++)
{
k=message[keyni[i%n]-1+i/n*n];
if(k=='?') continue;
else transmit[j++]=k;
}
transmit[j]=0;
cout<<"明文为: "<<transmit<<endl;
}
置换密码C++实现源码下载
5星 · 超过95%的资源 需积分: 19 125 浏览量
2009-01-02
11:32:50
上传
评论 1
收藏 711B RAR 举报
alongwind
- 粉丝: 3
- 资源: 5
最新资源
- 基于matlab实现的机械振动分析 的作业 自己编写关于机械振动建模 从物理模型到数学分析模型.rar
- 基于matlab实现的活性污泥模型的计算中进水水质转化的源代码.rar
- 基于matlab实现的霍夫变换的令一种算法,对于直线检测效果很好.rar
- 基于STM32F334的数字太阳能充电宝源码+项目说明..zip
- 基于matlab实现的进行霍夫变换检测圆...未使用matlab的源码.rar
- 基于matlab实现的集群优化算法-和声算法,可添加到其他工程进行二次开发.rar
- 基于matlab实现的利用Hough(霍夫)变换检测图片中的圆,并进行分割.rar
- 基于matlab实现的数学形态滤波器用于旋转机械的振动信号的降噪.rar
- 基于matlab实现的文档+程序 红外弱小目标检测
- 4444444444444444444444
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈