灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3332回复:0

凯撒加密法(加解密)

楼主#
更多 发布于:2012-08-24 20:01

凯撒加密(Caesar cipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。于是,w会被替换为z,x会被替换为a。

C语言源代码:

#include <stdio.h>
#include <string.h>
#define N 100
char c[N];
char p1[N];
void encrypt(char a[],int n)
{
int i,l;
l = strlen(a);
for(i=0;i<l;i++)
{
if(97<=a;;a<=(122-n))
{
c = a + n;

}
if(65<=a;;a<=(90-n))
{
c = a + n;
}
if(122-n<a;;a<=122)
{
c = 96 + (n-(122 - a));

}
if(90-n<a;;a<=90)
{
c = 64 + (n-(90 - a));
}
}
}
void decryption(char a[],int n)
{
int i,l;
l = strlen(a);
for(i=0;i<l;i++)
{
if(a-n>=97;;a<=122)
{
p1 = a - n;
}
if(a-n>=65;;a<=90)
{
p1 = a - n;
}
if(a-n<97;;a>=97)
{
p1 = 122-(97-a)-n+1;
}
if(a-n<65;;a<=90)
{
p1 = 90 -(65-a)-n+1;
}
}
}
void main()
{
int i,n,len = 0;
char p[N];
printf("Please input the plaintext:");
while((p[len] = getchar())!='\n')
len++;
printf("Please input the displacement:");
scanf("%d",;n);
printf("The encryption is:");
encrypt(p,n);
for(i=0;i<len;i++)
printf("%c",c);
printf("\n");
printf("The decryption is:");
decryption(c,n);
for(i=0;i<len;i++)
printf("%c",p1);
printf("\n");
}




喜欢0 评分0
游客

返回顶部