维吉尼亚加密算法 (C语言实现简单的加密算法) ——- 算法笔记007

维吉尼亚加密算法 (C语言实现简单的加密算法) ——- 算法笔记007概念理解什么是维吉尼亚加密算法加密步骤:1.创建一个匹配循环链表;2.接受需要加密的明文;3.根据随机生成的密钥配合链表进行移位;4.输出/保存对应的密文解密步骤:1.接受加密后的密钥;2.根据密文找

概念理解

什么是维吉尼亚加密算法

加密步骤:1.创建一个匹配循环链表;2.接受需要加密的明文;3.根据随机生成的密钥配合链表进行移位;4.输出/保存对应的密文

解密步骤: 1.接受加密后的密钥;2.根据密文找到对应的匹配值,通过密钥进行逆移位操作找到明文输出

总的来说维吉尼亚加密算法就是对循环链表的查找操作
这里我们来模拟a-z实现加密操作

在这里插入图片描述

我们输入changlon,然后生成随机密钥,进行加密操作
如:字符c,随机生成的密钥为2
我们找到a-z循环链表中的c字符位置,向后查找2个单位指到e的位置,e就是对应c的密文
注:图中的A-Z大写链表理解为a-z的小写链表,整个链表是循环的

实现代码

匹配链表结构定义

//双向循环链表结构
typedef struct doulNode{ 
   
	char data;
	struct doulNode *next;//指向下一个节点
	struct doulNode *prior;	//指向上一个节点 
}Doul,*DoulList;

创建一个匹配链表

//Status ,ok,error是宏定义int ,1,0
Status createLink (DoulList *L){ 
   

	(*L)=(DoulList)malloc(sizeof(Doul));
	(*L)->next=(*L)->prior=NULL;//链表的头初始化
	DoulList p,q;
	p=(*L);
	int i;
	for(i=0;i<ALPHAS;i++){ 
   
		q=(DoulList)malloc(sizeof(Doul));
		q->data='a'+i;
		q->next=p->next;
		q->prior=p;
		p->next=q;
		p=q;
	}
	p->next=(*L)->next;
	(*L)->next->prior=p;
	p=(*L);
	(*L)=

今天的文章维吉尼亚加密算法 (C语言实现简单的加密算法) ——- 算法笔记007分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/62294.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注