网络安全-古典加密算法之替代密码加解密算法
发布日期:2021-06-30 17:44:36
浏览次数:2
分类:技术文章
本文共 1579 字,大约阅读时间需要 5 分钟。
替代密码
替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文。例如:明文字母 a,b,c,d ,用 D,E,F,G 做对应替换后形成密文。 替代密码包括多种类型,如单表替代密码,多明码替代密码,多字母替代密码,多 表替代密码等。下面我们介绍一种典型的单表替代密码,恺撒(caesar)密码,又叫循环 移位密码。它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第 k 个字 母替代。它的加密过程可以表示为下面的函数:
E(m)=(m+k) mod n 其中:m 为明文字母在字母表中的位置数; n 为字母表中的字母个数; k 为密钥;E(m) 为密文字母在字母表中对应的位置数。 例如,对于明文字母 H,其在字母表中的位置数为 8,设 k=4,则按照上式计算出 来的密文为 L: E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L
(1) 加密和解密算法
#include#define MAX 1024void encrypt(char m[MAX],int k) //加密{ int loc[MAX]; char c[MAX]; for(int i=0;m[i]!='\0';i++) { if(m[i]>='a' && m[i]<='z') { loc[i]=m[i]-'a'; //位置从0开始 c[i]=(loc[i]+k)%26+'a'; //密文 } if(m[i]>='A' && m[i]<='Z') { loc[i]=m[i]-'A'; //位置从0开始 c[i]=(loc[i]+k)%26+'A'; //密文 } printf("%c",c[i]); } printf("\n");}void decode(char m[MAX],int k) //解密{ int loc[MAX]; char c[MAX]; for(int i=0;m[i]!='\0';i++) { if(m[i]>='a' && m[i]<='z') { loc[i]=m[i]-'a'; //位置从0开始 c[i]=(loc[i]-k)%26+'a'; //明文 } if(m[i]>='A' && m[i]<='Z') { loc[i]=m[i]-'A'; //位置0个开始 c[i]=(loc[i]-k)%26+'A'; //明文 } printf("%c",c[i]); } printf("\n");}int main(){ char m[MAX]; int k; printf("请选择:1.加密 2.解密\n"); int x; scanf("%d",&x); switch(x) { case 1: { printf("请输入明文:\n"); scanf("%s",m); printf("请输入加密密钥:\n"); scanf("%d",&k); printf("加密后的密文:\n"); encrypt(m,k); } break; case 2: { printf("请输入密文:\n"); scanf("%s",m); printf("请输入解密密钥:\n"); scanf("%d",&k); printf("解密后的明文:\n"); decode(m,k); } break; default: break; } return 0;}
加密:
解密:转载地址:https://lexiaoyuan.blog.csdn.net/article/details/87874150 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月23日 15时30分15秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ROS相关知识
2019-04-30
单目深度估计 monodepth2模型 代码
2019-04-30
位图索引Bitmap indexes
2019-04-30
YOLO算法(二)—— Yolov2 & yolo9000
2019-04-30
YOLO算法(三)—— Yolov3 & Yolo系列网络优缺点
2019-04-30
Python的__future__模块
2019-04-30
计算机视觉中的cost-volume的概念具体指什么(代价体积)
2019-04-30
启发函数heuristic 与 A*
2019-04-30
Image Pyramid(图像金字塔)
2019-04-30
Oracle 作业记录
2019-04-30
putty连接AWS配置(multimedia project)
2019-04-30
Hourglass Network 沙漏网络 (pose estimation姿态估计)
2019-04-30
OpenCV实战(二)——答题卡识别判卷
2019-04-30
目标检测神经网络的发展历程(52 个目标检测模型)
2019-04-30
Boundary loss 损失函数
2019-04-30