凯撒密码 C语言 加密解密
2017-03-18 10:16
190 查看
凯撒密码
凯撒加密(Caesarcipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:
a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。
于是,w会被替换为z,x会被替换为a。
如果是将移动的位数用随机数进行代替,并且记录下该随机数,则破解密码的难度将大大增加。
思路:
利用ASCII码 来计算对应密文利用数组下标 计算对应密文 (简洁)
利用双向链表和指针
Source Code:
#include <stdio.h> #include <stdlib.h> int main (){ char small_letter[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; char big_letter[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; char text[1000],result[1000]; int c,count=0,k,p; char function; printf("Insert Text:"); c=getchar(); while(1) //读取字符串 { if(c == '\n') break; text[count]=c; printf("%c",text[count]); count++; c=getchar(); } printf("\n"); printf("Encrypt or Decrypt? E or D :"); scanf("%c",&function); if (function == 'E'){ printf("Insert Key :" ); scanf("%d",&k); for(int i=0;i<count;i++){ if(text[i]>='A'&&text[i]<='Z') { result[i]=big_letter[((text[i]-'A')+k)%26]; } //找出加密后字符在字符数组里的对应位置 else if (text[i]>='a'&&text[i]<='z') { result[i]=small_letter[((text[i]-'a')+k)%26]; } else result[i]=text[i]; printf("%c",result[i]); } } else { printf("Insert Key :" ); scanf("%d",&k); for(int i=0;i<count;i++){ if(text[i]>='A'&&text[i]<='Z') { p=((text[i]-'A')-k); while(p<0)p+=26; result[i]=big_letter[p]; } //找出解密后字符在字符数组里的对应位置 //这里要注意不要让它超出范围(下表位置为负数) else if (text[i]>='a'&&text[i]<='z') { p=((text[i]-'a')-k); while(p<0)p+=26; result[i]=small_letter[p]; } else result[i]=text[i]; printf("%c",result[i]); } printf("\n"); } return 0; } // Vero's Code
相关文章推荐
- 总结C语言在嵌入式开发中应用的知识点(文件数据的加密与解密)
- C语言实现任何文件的加密解密
- 【C语言】对字母加密与解密(简易)
- Hill密码的加密与解密(C语言)
- C语言之文件的加密与解密
- 总结C语言在嵌入式开发中应用的知识点(文件数据的加密与解密)
- Python实现凯撒密码的加密与解密
- 用c语言对一个字符串进行加密和解密
- 凯撒密码加密解密--JAVA实现(基础)
- C语言写的(XOR)加密解密的程序
- C语言 命令行传参进行 异或 加密/解密
- 凯撒密码--简单的加密与解密
- 异或加密与解密(C语言)注释
- c语言实现对密码(字符串)进行加密,并解密
- android ndk 05 C语言 _union_enum 联合体 枚举 IO文件操作(文件加密解密)
- C语言初学者可以做到的加密和解密
- 加密与解密:一个简单的C语言示例
- 凯撒密码,凯撒加密解密.
- 凯撒密码(加密与解密)
- 凯撒密码加密解密--JAVA实现(基础)