如 :
1.明码--通过密匙-->得到密码. 这里的密码也就是密文的意思.
2.字母表:明密文中的单个字母单元所属的表. 这里的字母不是一般说来的abcd等,它可能是8位的,16位的,32位的,也可能只是某一部分字母比如A~Z.
... ...
移位密码简介:
移位密码最早可追溯至古罗马时期, <<高卢战记>>有描述恺撒曾经使用密码来传递信息,即所谓的"恺撒密码",它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E.这是一种简单的加密方法,这种密码的密度是很低的, 只需简单地统计字频就可以破译, 现今又叫"移位密码", 只不过移动的为数不一定是3位而已.
虽然移位密码非常简单, 但它是我们走向更高深的密码的基础, 因此以下基础知识还是希望大家能仔细看看.
在详细介绍之前, 我们有必要知道一些密码学所需的数学知识.
1.字母表:明密文中的单个字母单元所属的表. 比如如下
Z26:很常用的基于26个英文大写字母的字母表. 这里从0开始,25结束来标志其值, 而不是使用其ASCII值,目的是为了使计算更加方便.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
如明文JACKOZOO的码值即为:9 0 2 10 14 25 14 14 . 每个字符占字母表中的一个字母.
Z2~8: 也即Z256. 这是很常用的一类字母表, 也即大家经常使用的字节流加密. 字母表从00~FF共2的8次个字母元素.
如明文JACKOZOO的码值(ANSI编码)即为4A 41 43 4B 4F 5A 4F 4F .
明文爱你一生一世(ANSI编码)的码值即为B0 AE C4 E3 D2 BB C9 FA D2 BB CA C0 .
Z2~16:也即Z65536. 此字母表常用于字流加密. 字母表从0000~FFFF共2的16次个字母元素.
如明文JACKOZOO(ANSI)的码值为: 4A41 434B 4F5A 4F4F . 共占4个字母单元.
明文爱你一生一世(ANSI)的码值为: B0AE C4E3 D2BB C9FA D2BB CAC0. 共占6个字母单元.
Z2~32 : 字母表从00000000~FFFFFFFF共2的32次个字母单元. 常用于双字流的加密.
如明文JACKOZOO(ANSI)的码值为: 4A41434B 4F5A4F4F . 共占2个字母单元.
明文爱你一生一世(ANSI)的码值为: B0AEC4E3 D2BBC9FA D2BBCAC0. 共占3个字母单元.
附注: 上述的所谓字节流,字流,双字流仅仅是相对于你加密时所选取的字母表而言的, 因为任何信息在计算机中都是以二进制流存放的.
2.模n加与模n乘:
命n为正整数,且字母表Zn = {0,1,2 ... n-1}. a,b属于Zn, 则定义a+b mod n 为a和b的模n加.
同理有ab mod n 为a 和 b 的模n乘.
移位密码:
移位密码体制(Caesar Cipher)的原理可用a+b mod 26 做简介刻画. 设移位密码体制中有:
明文: IAMJACKOZOO
秘匙: K = 2
密文: KCOLCEMQBQQ
其中的密文的每个字母单元是由明文在字母表内循环右移3位所得 .
这一加密法则可概括为: y = (x+3) mod 26 . x,y ∈Z26. x为密文, y为明文.
我们小结一下, 移位密码中有如下概念:
(这是针对Z26字母表)
1) 明密文字母表 Z26
2) 秘匙K = a 属于Z26
3) 加密变换 y = (x+a) mod 26 , x,y ∈ Z26
4) 解密变换 x = (y-a) mod 26 , x,y ∈ Z26
我们来看一个例子:
例1:已知移位密码中明文为HIJACKOZOO, 字母表为Z26,秘匙为K=9,请加密之.
解 :由字母表Z26得HIJACKOZOO 的码值为:
7 8 9 0 2 10 14 25 14 14 (共10个字母单元)
对其每个字母单元做y = (x+k) mod 26 运算得:
→ 16 17 18 9 11 19 23 8 23 23
因此得密文为:
→ QRSJLTXIXX
例2:已知移位密码中明文为爱你一生一世, 字母表为Z2~8, 秘匙为0x99, 请加密之.
解 :由字母表Z2~8得爱你一生一世的码值为:
B0 AE C4 E3 D2 BB C9 FA D2 BB CA C0 (共12个字母单元)
对其每个字母单元做 y = (x+k) mod 0x100 运算得:
→ 49 47 5D 7C 6B 54 62 93 6B 54 63 59
因此得密文为:
IG]|kTb搆TcY.
=====================
参考代码
#include<stdio.h>
void code(char *p,int key)
{
while(*p!='\0')
{
*p=97+(*p-97+key)%26;
p++;
}
}
void uncode(char *p,int key)
{
while(*p!='\0')
{
*p=97+(*p-71-key)%26;
p++;
}
}
main()
{
char str[100];
int n,key;
printf("输入密匙:");
scanf("%d",&key);
printf("输入1加密,输入2解密:");
scanf("%d",&n);
printf("输入字符串:");
scanf("%s",str);
if(n==1)
{
code(str,key);
printf("密文为%s\n",str);
}
else if(n==2)
{
uncode(str,key);
printf("原文为%s\n",str);
}
}
分享到:
相关推荐
### 密码学中的线性反馈与对偶移位寄存器各功能实现 #### 一、背景介绍 在密码学领域,线性反馈移位寄存器(Linear Feedback Shift Register,简称LFSR)与对偶移位寄存器(Dual Shift Register,简称DSR)是两种...
移位密码学是一种古老的加密技术,它基于字母表的简单位移来实现信息的加密与解密。在C语言环境中,实现移位密码学的加解密程序可以帮助我们理解这种密码学原理,并且通过VC++6.0进行编译运行,用户可以手动输入密钥...
在信息安全领域,现代密码学扮演着至关重要的角色,它不仅仅是加密和解密技术的简单应用,更是维护数据安全和隐私的重要保障。随着信息时代的飞速发展,数据安全问题日益凸显,对密码学的研究和应用显得尤为迫切。...
密码学是信息安全领域的一个核心分支,它涉及到一系列用于保护数据安全的技术和算法。在这个"密码学部分解码源程序"的压缩包中,包含了几个重要的密码学加解密算法的源代码,包括DES(Data Encryption Standard)、3...
在信息安全领域,密码学是保护数据安全的重要工具。移位密码是一种古老的密码体制,它基于字符的简单位移操作来实现加密与解密。在这个作业中,我们将关注如何使用编程语言,如VC(Visual C++),来实现这种密码机制...
例如,简单的移位密码和单表代换密码由于其有限的密钥空间,可以通过统计分析和穷举搜索迅速破解。对于更复杂的仿射密码,通过比较明文和密文的统计特性,也能找到解密的关键。 2.2.2 多表代换密码分析 多表代换...
现代密码学是一门深入研究信息安全和数据保护的学科,它主要关注如何安全地存储和传输信息。在杨波教授的课程中,习题涉及到的主要知识点包括仿射密码、多表代换密码以及流密码,这些都是密码学基础理论的重要组成...
在密码学领域,课程设计通常会涵盖基础理论与实践应用两个方面,旨在让学生深入理解密码学的核心原理,并能运用这些原理解决实际问题。本课程设计的主题是“密码学”,涉及C和C++两种编程语言,这表明学生需要利用这...
这份密码学课程设计报告深入探讨了几个关键的密码学概念和技术,包括分组密码的SPN模型、RSA公钥加密算法以及随机性检测,这些都是密码学中的基础且重要的组成部分。 一、分组密码SPN(Substitution-Permutation ...
- **移位密码**:通过移动字符的位置来进行加密,例如凯撒密码。 - **单表替换密码**:每个明文字符都替换为固定的密文字符。 - **多表替换密码**:每个明文字符都可以根据不同的规则替换为多个密文字符。 - **仿射...
密码学是信息安全的基础,主要研究如何保护数据的机密性、完整性和真实性。这篇笔记主要涵盖了密码学的基本概念、安全威胁、密码体制分类以及几种古典密码算法。 首先,信息安全面临的威胁主要包括被动攻击和主动...
**密码学课程设计——探索加密解密的艺术** 在信息技术飞速发展的今天,数据安全成为了一个至关重要的议题。武汉科技大学的密码学课程设计旨在让学生深入理解并掌握加密与解密的基本原理,通过实践操作来锻炼其在...
在密码学的学习领域中,理解古典密码的设计原理和实现方法是构建加密系统的基础。本次实验报告旨在详述两种基本的古典密码设计与实现过程,这两种密码分别是多表代替密码和16-置换移位密码。通过实验的亲自动手设计...
在密码学领域,四大古典密码是历史悠久且对现代加密技术有着深远影响的基础方法。这些密码包括移位密码、放射密码(或称为转轮密码)、维吉尼亚密码以及置换密码。这些古老的加密技术虽然在今天看来可能不够安全,但...
应用密码学思维导图包含以下章节: 1、概述:密码学发展历史、应用前景、密码学总体概览 2、数学基础:素数和互素、模运算、费马定理、欧几里得算法、群平方剩余…… 3、古典密码:代换密码、置换密码、轮转机 4、流...
密码学是一门涉及信息安全、编码理论和计算复杂性等领域的学科,主要研究如何在不安全的环境中保护数据的安全。南京航空航天大学的这份教程涵盖了密码学的多个关键方面,包括古典密码、分组密码、序列密码、公钥密码...
华科网络空间安全学院的密码学试卷,有需要者可自取。另外试卷内并无答案,仅用于复习和参考。下面是一道试题: 设一个同步流密码的密钥流是通过定义在Z2上的5级线性反馈移位寄存器生成的,现截获到密文串...
《现代密码学答案》是由何大可等编著的一本关于密码学的教材答案集,主要涵盖了密码学的基础理论和应用技术。虽然缺失了第七章的内容,但其他章节的习题与解答完整,为读者提供了丰富的学习资源。该书由人民邮电出版...
密码学是信息安全领域的重要组成部分,它研究如何保护信息免受未经授权的访问、修改或泄露。在给定的压缩包文件中,我们重点关注了几个关键的密码学算法:AES(高级加密标准)、MD5(消息摘要算法5)以及背包公钥...