凯撒加密法(加解密)
4289 点击·0 回帖
![]() | ![]() | |
![]() | 凯撒加密(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"); } | |
![]() | ![]() |