概念理解
什么是维吉尼亚加密算法
加密步骤: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