信息加密——古典密码学

前言

“密码”或“加密系统”用于“加密”数据。
对于原始的未加密的数据,我们称之为“明文”。
对于加密的结果,我们称之为“密文”。
通过称为“解密”的过程,我们把密文恢复成原始的明文。

-

古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。
古典密码学的加密如下:

一、替换(凯撒)密码

简单替换密码加密是通过将当前字母替换为在常规字母表中第n个位置之后的那个字母来完成的。较复杂的替换密码是为字母表建立映射关系,由此可以产生更大的密钥空间。

代码如下:

#include "stdio.h"
#include "conio.h"
int main()
{ int k,i=0; char a[100],b[100]={0},c[100]={0};/*printf("请输入明文(小写字母):\n"); gets(a); printf("请输入加密密钥(1-25):\n"); scanf("%d",&k); do{       if((a[i]+k)>122)b[i]=(char)(a[i]+k-26); else b[i]=(char)(a[i]+k);i++; }while(a[i]!='\0'); printf("密文为:\n"); puts(b);*///下面是解密部分//printf("\n"); //printf("请输入解密密钥(1-25):\n");printf("请输入密文(小写字母):\n"); gets(a); for(k=1;k<=25;k++){i=0;do{       if((a[i]-k)<97)b[i]=(char)(a[i]-k+26); else b[i]=(char)(a[i]-k);i++; }while(a[i]!='\0');printf("解出明文为:\n"); puts(b);}return 0;
}

二.换位密码

换位密码不对任何明文内容进行替换,而是通过换位(打乱顺序)的方法进行加密。典型的换位密码是双换位密码,这种加密方案首先要将明文写在一个给定大小的矩阵中,然后对行和列依据特定的序列进行置换操作。

1.简单换位(栅栏)密码

栅栏密码也称栅栏易位(Columnar Transposition),是一种经典的简单换位密码,其操作方式是把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。 例如:明文attackatdawn,使用栅栏密码加密后的结果为atcadwtaktan。

代码如下:

#include "stdio.h"
#include "conio.h"
int main()
{ char a[100],b[100]={0},c[100]={0};printf("请输入明文(小写字母):\n"); gets(a);int i=0,j=0,k=0;do{       if(i%2==0){b[j]=a[i];j++;} else{c[k]=a[i];k++;}i++; }while(a[i]!='\0'); //当遇到字符串结束符号时循环结束i=0;while(c[i]!='\0'){b[j]=c[i];i++;j++;} printf("密文为:\n");  puts(b);//输出密文数组bprintf("请输入密文(小写字母):\n"); gets(a);int len;for(len=0;;len++) if(a[len]=='\0') break;j=0;if(len%2==0) k=len/2;else k=len/2+1;for(i=0;i<len;i++){if(i%2==0){b[i]=a[j];j++;}else{b[i]=a[k];k++;}}puts(b);return 0;
}

2.猪圈密码

猪圈密码(Pigpen cipher)是一种以格子为基础的简单替换密码。

3.培根密码

培根密码(Baconian Cipher)是一种替换密码,16世纪由英国哲学家兰西斯·培根(知识就是力量口号的提出者)创造,每个明文字母被一个由5字符组成的序列替换。

4.摩斯电码

摩尔斯电码是无线电发明后最早使用的信息编码,通过电键敲击出点、划及中间的停顿发送

5.当铺密码

当铺密码通常使用汉字来隐藏信息,专门用来加密数字,不需要密钥,明文信息包含在加密后的密文中。
较常见的当铺密码有两种,一种是将数字映射到对应笔画的汉字,另外一种是利用汉字的字形特征,当前汉字有多少笔画出头就转化成数字几。

5201314

6.键盘密码

利用键盘的特性制作的密码,常见有计算机的键盘和手机的键盘,加密的方式有坐标法和顺序法。
方式1:按键盘顺序编码A-Z
方式2:按行列坐标将字母转换为数字,例如Q=11、M=73
方式3:按键盘顺序将字母转换为数字,QWERTY=123456

7.与佛论禅

ILOVEYOU

信息加密——古典密码学相关推荐

  1. 密码学原理-篇1:古典密码学

    密码学原理-篇1:古典密码学 关键词: 恺撒密码 单表替换密码 多表替换密码 重合指数 古典密码学之所以被称为古典,是因为区别于现代密码学,这些密码理论虽然很有价值,但是现在很少使用.因此,学习古典密 ...

  2. 信息安全导论 实验一 古典密码学

    一.实验目的与原理 1.实现古典密码学中的移位密码算法和维吉尼亚算法. 2.了解两种算法的原理,并且编写出来. 3.使用语言为C++或者Python等. 二.实验内容与记录 位移密码算法: 移位密码算 ...

  3. 古典密码学、DES对称加密、3DES对称加密知识总结和实验

    实验三.古典密码学.DES对称加密.3DES对称加密 一.古典密码学:当铺密码.培根密码.摩斯密码.键盘密码.与佛论禅 1.当铺密码: 解密"由人俱一口中"和"大中口由人 ...

  4. 古典密码学与现代密码学

    一.古典密码学 何谓"加密" "密码"或"加密系统"用于"加密"数据. 对于原始的未加密的数据,我们称之为"明 ...

  5. CRYPTO古典密码学学习

    CRYPTO古典密码学学习 1.键盘密码加密 2.Brain Fuck 和 Ook密码 3.替代密码 莫斯密码 凯撒加密 rot13\color{olive}{rot13}rot13 词频分析法 [^ ...

  6. 古典密码学原理和Base64算法原理

    密码学,就是研究如何将一个内容(可以是字符串.文件.二进制流)通过一系列算法转换成另一种内容的学科.从广义上来看,有一个算法可以将字符串转换成另一个字符串即可,即该算法可逆不可逆都可以:从狭义上来看, ...

  7. 信息加密(古典密码学)

    一.何谓"加密" 首先,"密码"或"加密系统"用于"加密"数据. 明文:对于原始的未加密的数据,我们称之为"明 ...

  8. 密码学替换密码c语言编程,古典密码学上机实验

    实验一.传统密码算法 一.实验目的及任务 通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础 二.实验环境 运行Windows操作系统的PC机,具有C语言编译环 ...

  9. 密码学基本原理和发展——古典密码学

    目录 1 滚筒密码 2 棋盘密码 3 凯撒密码 4 单表代换与多表代换 4.1 单表代换 4.2 多表代换 密码技术最早起源于公元前404年的希腊,此后密码大致经历了古典密码.近代密码和现代密码三个阶 ...

最新文章

  1. 别说,Cerebro还真好用!老板再也不用担心ES集群了
  2. 2021 年大厂面试高频架构题汇总(附答案详解)
  3. 基础连接已经关闭: 无法与远程服务器建立信任关系
  4. 面对不可避免的故障,我们造了一个“上帝视角”的控制台
  5. Codeforces 959 E. Mahmoud and Ehab and the xor-MST 思路:找规律题,时间复杂度O(log(n))
  6. mySQL建表及练习题(下)
  7. [SlickEdit] SlickEdit支持目录别名FTP控件更新
  8. 《Python Cookbook 3rd》笔记(2.12):审查清理文本字符串
  9. 武汉科技大学c语言复试题库,2016年武汉科技大学计算机科学与技术学院C语言程序设计复试笔试仿真模拟题...
  10. 60K!刚面完Python!这个被Oracle裁掉的程序员求职刷爆全网!
  11. 埃氏筛法求质数(例如:200以内的质数)
  12. c++_String一些使用记录
  13. SQL server中关于年月日周的添加
  14. 小猫爪:PMSM之FOC控制01-Clark变换
  15. 【樂理】中國古典音樂樂理
  16. 两性相吸的20个完美方案
  17. [大话设计模式C++版] 第12章 牛市股票还会亏钱 —— 外观模式
  18. LibcSearcher报错:no matched libc,please add more libc or try others
  19. 远程控制 远程监控软件屏幕实用技巧
  20. 基于RFM和AHP构建用户评分分析体系

热门文章

  1. flask搭建及爬虫数据展示
  2. 【National Treasure】
  3. qttabar-高效windows文件管理器
  4. “科技+数据+场景” 助力金融资源更多投向农业农村
  5. Linux学习总结(10)——Linux查看CPU和内存使用情况
  6. C语言中反斜杠“\“的意义和用法
  7. 火狐浏览器自动登录百度和CSDN等各个平台
  8. mysql offset 问题_MySQL_优化mysql的limit offset的例子, 经常碰到的一个问题是limi - phpStudy...
  9. Windows系统安装免费的开源虚拟机软件VirtualBox
  10. 实操揭秘:抖音短视频常见问题解答(收藏必备):国仁楠哥