网络安全-古典加密算法之置换密码加解密算法
发布日期:2021-06-30 17:44:37
浏览次数:2
分类:技术文章
本文共 1046 字,大约阅读时间需要 3 分钟。
置换密码
置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为attack begins atfive,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式: 根据密钥 cipher 中各字母在字母表中出现的先后顺序,给定一个置换: 根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2 列,第 6 列的顺序排列,则有下面形式: 根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2 列,第 6 列的顺序排列,则有下面形式: 从而得到密文:abatgftetcnvaiikse 其解密的过程是根据密钥的字母数作为列数,将密文按照列,行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。
代码:
#include#include #include using namespace std;void encrypt() { string m; cout<< "请输入明文:" < > m; for (int i = m.size(); i%7!=0; i++) { m.push_back('A'); } for (int i = 0; i < m.size(); i+=7) { swap(m[i], m[i+2]); swap(m[i], m[i+6]); swap(m[i], m[i+3]); swap(m[i], m[i+0]); swap(m[i], m[i+5]); swap(m[i], m[i+1]); swap(m[i], m[i+4]); } cout<<"加密后密文为:"< >m; for(int i=0;i >x; switch(x) { case 1:encrypt(); break; case 2:decrypt(); break; default: break; } return 0;}
加密:
解密:转载地址:https://lexiaoyuan.blog.csdn.net/article/details/87874271 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月10日 16时16分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【深度学习笔记】pytorch的点乘(dot product)
2019-04-30
【深度学习笔记】残差
2019-04-30
【python学习笔记】读取指定文件夹中的图片,结合边缘保留滤波EPF
2019-04-30
【工具和环境】Linux下安装pycharm
2019-04-30
【Accumulation】The definition of SISR
2019-04-30
【工具与环境】Windows下安装Sublime Text 3
2019-04-30
【工具与环境】Excel中批量插入行
2019-04-30
【个人实验注意事项】
2019-04-30
【学习笔记】对vanilla的一些个人理解
2019-04-30
【解决错误】The size of tensor a (8) must match the size of tensor b (64) at non-singleton dimension 1
2019-04-30
word文档中实现目录索引中标题加粗,前导符和页码不加粗
2019-04-30
“学硕” VS “专硕”
2019-04-30
【NLP学习笔记】知识图谱阅读笔记及其心得
2019-04-30