网络安全-古典加密算法之置换密码加解密算法
发布日期:2021-06-30 17:44:37 浏览次数:2 分类:技术文章

本文共 1046 字,大约阅读时间需要 3 分钟。

置换密码

置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。

矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为attack begins atfive,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:
1
根据密钥 cipher 中各字母在字母表中出现的先后顺序,给定一个置换:
2
根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2 列,第 6 列的顺序排列,则有下面形式:
根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2 列,第 6 列的顺序排列,则有下面形式:
3
从而得到密文: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;}

加密:

3
解密:
4

转载地址:https://lexiaoyuan.blog.csdn.net/article/details/87874271 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:网络安全-练习RSA算法
下一篇:网络安全-古典加密算法之替代密码加解密算法

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月10日 16时16分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章