置换密码

置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为attack begins atfive,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:

根据密钥 cipher 中各字母在字母表中出现的先后顺序,给定一个置换:

根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2 列,第 6 列的顺序排列,则有下面形式:
根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2 列,第 6 列的顺序排列,则有下面形式:

从而得到密文:abatgftetcnvaiikse
其解密的过程是根据密钥的字母数作为列数,将密文按照列,行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。

代码:

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
void encrypt() {string m;cout<< "请输入明文:" <<endl;cin>> 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<<"加密后密文为:"<<endl;for (int i = 0; i < m.size(); i++){if(i!=0 && i%7==0)cout<<endl;cout<<m[i];       }cout<<endl;
}
void decrypt() {string m;cout<<"请输入密文:"<<endl;cin>>m;for(int i=0;i<m.size();i+=7) {swap(m[i], m[i+4]);swap(m[i], m[i+1]);swap(m[i], m[i+5]);swap(m[i], m[i+0]);swap(m[i], m[i+3]);swap(m[i], m[i+6]);swap(m[i], m[i+2]);}cout<<"明文为:"<<endl;for (int i = 0; m[i]!='A'; i++){cout<<m[i];}cout<<endl;
}
int main()
{int x;cout<<"1.加密 2.解密"<<endl;cin>>x;switch(x) {case 1:encrypt(); break;case 2:decrypt(); break;default: break;}return 0;
}

加密:

解密:

网络安全-古典加密算法之置换密码加解密算法相关推荐

  1. php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)

    依赖PHP自身的mcrypt扩展 class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default_secret_k ...

  2. 加解密算法的概述和总结

    加解密算法的概述和总结 一.单向散列算法 也称为Hash(哈希)算法.是一种将任意长度的消息压缩到某一固定长度(消息摘要)的函数(该过程不可逆).Hash函数可用于数字签名.消息的完整性检测.消息起源 ...

  3. Python中的AES加解密算法

    AES加密的参数及其条件:这个AES加密的主要坑就在于这些条件,首先AES加密有几个参数 秘钥:加密的时候用秘钥,解密的时候需要同样的秘钥才能解出来 明文:需要加密的内容 模式:aes 加密常用的有E ...

  4. python中凯撒密码_python实现凯撒密码、凯撒加解密算法

    凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...

  5. kotlin写的加解密算法,包括模式和填充方式

    DES加密 DES是一种对称加密(Data Encryption Standard)算法. DES算法一般有两个关键点,第一个是加密算法,第二个是数据补位. 加密算法常见的有ECB模式和CBC模式: ...

  6. AES加解密算法详解

    0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES).AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准. 根据使用的密码长度,AES最常见的有3种方案,用以适应 ...

  7. DES加解密算法原理详解与实现

    [DES密码编写] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) softwa ...

  8. 凯撒加密的python语言程序_python实现凯撒密码、凯撒加解密算法

    凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...

  9. 各种加解密算法分类及其各自的安全性能对比

    常用的加解密算法分三大类:非对称密钥加密算法.对称密钥加密算法.Hash加密算法 一.非对称密钥加密算法(RSA.DSA.ECC.DH等): 非对称加密又叫公开密钥算法(public key algo ...

  10. 程序猿成长之路番外篇之前后端加解密(rsa+aes混合加解密算法)

    今年国庆前夕接手一个外部项目,说是要保障接口数据安全,数据安全相对容易些,接口安全嘛emmmmm, 这个要考虑加解密算法.白名单之类的问题了.于是打算今天搞一期接口安全为题的成长之路番外篇. 为什么要 ...

最新文章

  1. 1、Cocos2dx 3.0游戏开发三找一小块前言
  2. HDU 2035 人见人爱A^B
  3. Spring JMS,消息自动转换,JMS模板
  4. jdbcTemplate小用总结
  5. 浅谈_依赖注入 asp.net core
  6. 一大波人气博主袭来,现场直播华为全联接2020!
  7. 【iOS系列】-iOS中内存管理
  8. 航海家辛巴达的故事(一)
  9. 连这些题都不会做好意思说自己懂网络?
  10. sap 双ALV联动显示示例(备份)
  11. HTML文件命名_没有删不掉的文件:强制终止、一键解锁,样样精通
  12. Vivado HLS常用优化命令介绍
  13. 2021年危险化学品经营单位主要负责人免费试题及危险化学品经营单位主要负责人考试总结
  14. 强化学习 - 详细解读DQN(更新完成)
  15. python用七巧板图片画个图_canvas练习 - 七巧板绘制
  16. 程序员搞笑段子锦集,内容太过真实,默默留下了感慨的泪水!
  17. weblogic下java程序占用cpu过高的问题排查
  18. OllyDbg断点详解
  19. 编译error: no acceptable C compiler found in $PATH
  20. 反病毒还是留后门?卡巴斯基反病毒服务器被爆多个漏洞

热门文章

  1. word打开文档很久很慢_word打开慢,详细教您怎么解决word打开慢
  2. 机器学习如何优化策略游戏
  3. 爱你穿越时间,两行来至秋末的眼泪
  4. html submit提交事件,submit方法与onsubmit事件
  5. 广东外语外贸大学第16届程序设计竞赛-C 井大师的码魂
  6. 综述:环境中的噬菌体宿主互作
  7. 今日头条网页数据采集接口
  8. ns手柄pc驱动_支持amiibo和体感!switch游戏手柄莱仕达天弓NS体验
  9. 速读原著-TCP/IP(IP首部)
  10. ubantu 常用命令