当前位置:编程学习 > 网站相关 >>

凯撒加密法(加解密)

凯撒加密(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[i]&&a[i]<=(122-n))
{
c[i] = a[i] + n;
 
}
if(65<=a[i]&&a[i]<=(90-n))
{
c[i] = a[i] + n;
}
if(122-n<a[i]&&a[i]<=122)
{
c[i] = 96 + (n-(122 - a[i]));
 
}
if(90-n<a[i]&&a[i]<=90)
{
c[i] = 64 + (n-(90 - a[i]));
}
}
}
void decryption(char a[],int n)
{
int i,l;
l = strlen(a);
for(i=0;i<l;i++)
{
if(a[i]-n>=97&&a[i]<=122)
{
p1[i] = a[i] - n;
}
if(a[i]-n>=65&&a[i]<=90)
{
p1[i] = a[i] - n;
}
if(a[i]-n<97&&a[i]>=97)
{
p1[i] = 122-(97-a[i])-n+1;
}
if(a[i]-n<65&&a[i]<=90)
{
p1[i] = 90 -(65-a[i])-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[i]);
printf("\n");
printf("The decryption is:");
decryption(c,n);
for(i=0;i<len;i++)
printf("%c",p1[i]);
printf("\n");
}


hdk_1992的专栏
补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,