古典密码
- 格式:doc
- 大小:44.50 KB
- 文档页数:6
古典密码汇总
古典密码是指在计算机技术出现之前使用的一种数据加密方式。
以下是一些常见的古典密码:
1. 凯撒密码:将明文中的每个字母按照字母表顺序向后移动固定的位置来生成密文。
2. 维吉尼亚密码:通过使用不同的密钥按字母表顺序对明文逐字母进行移位加密。
3. 单换密码:根据某种规则将明文中的每个字母替换为另一个字母来生成密文。
4. 多换密码:类似于单换密码,但使用多个替换规则来加密明文。
5. 栅栏密码:将明文按照一定长度分成多行,然后按行输出密文。
6. 简单替换密码:将明文中的每个字母替换为另一个字母或符号来生成密文。
7. 维因纳尔方阵密码:使用一个方阵将明文中的字母映射为密文中的其他字母。
8. 培根密码:将明文中的每个字母映射为5个二进制位,然后用A和B表示。
这只是一小部分古典密码,还有许多其他类型的古典密码存在。
由于古典密码的安全性相对较低,现代密码学已经发展出了更加复杂和安全的加密算法。
实验1: 古典密码一、实验名称和性质二、实验目的掌握古典密码体制中的基本加密解密运算,如加法密码、仿射密码等,几种典型的古典密码体制,如Hill体制,以及关于这些古典密码体制的一些破译方法。
三、实验的软硬件环境要求硬件环境要求:单机,无需上Internet网。
使用的软件名称、版本号以及模块:使用Matlab,版本6.0或以上。
四、知识准备前期要求掌握的知识:Matlab编程实验相关理论或原理:古典密码的基本加密解密运算,几种典型古典密码的加密解密算法。
实验流程:五、实验要求和注意事项1.完成给出的程序中标有“-----------------------”部分的编程。
2.参照例子的做法,完成实验题目。
要求给出完整的过程,包括程序,实验结果。
六、实验步骤和内容1.基本的加密解密运算例1. 使用加法密码(或称为移位密码)获得密文kddkmu,尝试所有的可能性来解密它。
解:编写allshift程序,调用该程序allshift('kddkmu')运行结果为kddkmuleelnvmffmownggnpxohhoqypiiprzqjjqsarkkrtbsllsuctmmtvdunnuwevoovxfwppwygxqqxzhyrryaizsszbjattack 是列表上出现的唯一单词,所以它就是明文buubdlcvvcemdwwdfnexxegofyyfhpgzzgiqhaahjribbiksjccjltfunction y = allshift(x);% This function displays all of the shifts of the message xfor j=0:25,------------ ;disp(z);endfunction y = shift(x,b);% This function performs the shift encryption function% y = x + b mod 26% We assume that x is a text string and b is a number% The result is kept in text representationxnum=text2int(x);-----------------------;y=int2text(ynum);function y = text2int (x)% This function takes the letter in the string x and converts% it to an integer.% The convention for this function is% a --> 0% b --> 1% and so on...if ( (x < 'a') | (x > 'z') ),error('Text character out of range a-z');end;y=x - 'a'; %It helps to know Matlab tricksfunction y = int2text (x)% This function takes the number in the variable x and converts% it to a character y.% The convention for this function is% a <-- 0% b <-- 1% and so on...if ( (x < 0) | (x > 25) ),error('Integer out of range 0 - 26');end;y=char(x + 'a'); %It helps to know Matlab tricks例2. 运用仿射函数7x +8 加密明文信息cleopatra 。
解:编写affinecrypt 程序,调用该程序,得affinecrypt('cleopatra',7,8)ans =whkcjilxifunction y = affinecrypt(x,a,b);% This function performs the affine encryption function% y = a x + b mod 26% where (a,26) = 1% The result is kept in numerical representation--------------------------------2.典型的古典密码体制例3. 密文22, 09, 00, 12, 03, 01, 10, 03, 04, 08, 01, 17是使用如下的Hill 密码加密的:1234567810⎛⎫ ⎪ ⎪ ⎪⎝⎭试破解它。
解:首先将加密矩阵放入变量K 。
>> K=[1 2 3;4 5 6;7 8 10]K =1 2 34 5 67 8 10然后,求解密矩阵,即求逆矩阵并mod 26:>> format rat %使用有理数格式>> Kinv=inv(K)Kinv =-2/3 -4/3 1-2/3 11/3 -21 -2 1>> K1=Kinv*3K1 =-2 -4 3-2 11 -63 -6 3>> K2=round(mod(K1*9,26))K2 =8 16 18 21 241 24 1K2是矩阵K mod 26的逆矩阵,能按如下方法检验:>> mod(K2*K,26)ans =1 0 00 1 00 0 1下面是利用解密矩阵K2进行破解:>> mod([22, 09, 00]*K2,26)ans =14 21 4>> mod([12, 03, 01]*K2,26)ans =17 19 7>> mod([10, 03, 04]*K2,26)ans =4 7 8>> mod([08, 01, 17]*K2,26)ans =11 11 23因此,明文是14 ,21,4,17,19,7,4,7,8,11,11,23。
可以还原回原来的字母:>> int2text([14 ,21,4,17,19,7,4,7,8,11,11,23])ans =overthehillx注意,最后的x 被附加到明文后是为了要构成3个的分组七、实验题目1.使用加法密码获得密文ycvejqwvhqtdtwvwu ,请解密。
2.使用仿射函数57(mod26)x +加密 How are you?3. 密文 zirkzwopjjoptfapuhfhadrq 是使用如下的Hill 密码加密的:12344321112462964⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭试破解它。
K=[1 2 3 4;4 3 2 1;11 2 4 6;2 9 6 4];x='zirkzwopjjoptfapuhfhadrq';format rat; %使用有理数格式Kinv=inv(K);Kabs=abs(det(K));K1=Kinv*Kabs;K2=round(mod(K1*Kabs^2,26));mod(K2*K,26)xnum=text2int(x)mod([ 25,8,17,10]*K2,26)mod([25,22,14,15]*K2,26)mod([9,9,14,15]*K2,26)mod([19,5,0,15]*K2,26)mod([20,7,5,7]*K2,26)mod([0,3 ,17,16]*K2,26)int2text([9,0,2,10,0,13,3,9,8,11,11,22,4,13,19,20,15,19,7,4,7,8,11,11 ])1、ycvejqwvhqtdtwvwuxbudipvugpscsvuvtwatchoutforbrutusvzsbgntsenqaqtstruyrafmsrdmpzpsrsqtxqzelrqcloyorqrpswpydkqpbknxnqpqorvoxcjpoajmwmpopnqunwbionzilvlonomptmvahnmyhkuknmnlosluzgmlxgjtjmlmknrktyflkwfisilkljmqjsxekjvehrhkjki lpirwdjiudgqgjijh kohqvcihtcfpfihig jngpubhgsbeoehghf imfotagfradndgfge hlenszfeqzcmcfefd gkdmryedpyblbedec fjclqxdcoxakadcdb eibkpwcbnwzjzcbca dhajovbamvyiybabz cgzinuazluxhxazay bfyhmtzyktwgwzyzx aexglsyxjsvfvyxyw zdwfkrxwirueuxwxv2、Mznuhobuxzdt。