单表密码体制:在一个密码体制中,如果明文字母对应的密文字母在密文中始终保持不变
多表密码体制:在一个密码体制中,如果明文中不同位置的同一明文字母在密文中对应的密文字母不同
分组密码:又称密钥密码,对称密码,它的加密密钥与解密密钥相同。利用分组密码对明文加密时首先对明文进行分组,每组长度相同,然后对每组明文分别加密得到等长密文。
(由秘钥——》生成密钥矩阵——》按照加密规则得到密文)
内容介绍:
Ci=(Mi+Ki)%26——》密文字母的下标=(明文字母的下标+秘钥字母的下标)%26
例题解读:
在表中找到第一个明文字母T的位置,和第一个密文字母c的位置,我们知道c的下标是2
(从0开始标记),所以字母T向后移动2个单位得到密文字母V。同理我们知道第二个密
文字母的i的下标是8,将明文字母h向后移动8个单位得到密文字母P
-----------------------------------------------------------------------------------------------------------------
概念:
加密变换公式:C=(K1*M+K2)mod26
解密变换公式:M=(K1逆)*(C-K2)mod26
H——》(5*7+7)%26=16——》Q
E——》(5*4+7)%26=1——》B
L——》(5*11+7)%26=10——》K
P——》(5*15+7)%26=4——》E
M——》(5*12+7)%26=15——》P
E——》(5*4+7)%26=1——》B
代码实现:
package cn.itcast.util;
import java.util.Scanner;
public class communicate {
public char []letters={'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'};
public char []input=new char [20];
public int getNum(char letter){
for (int i=0;i
如:输入101010,取出收尾的两位数字10做为行标2,中间的4位数字0101作为列标5,得到坐标(2,5)查下表得到结果6
——》0110作为输出数据
--------------------------------------------------------------------------------
在公钥密码体制中,加密密钥和解密密钥是不一样的,加密密钥简称公钥,解密密钥简称私钥,加密密钥可以公开,解密密钥必须保密,从加密密钥计算解密密钥是难解的。
利用欧几里得算法计算解密密钥d=147
220=3*73+1
3=1*3+0
a1
73
b 1 73
所以因为a是1奇数个,所以d=220-73=147
证明其解密变换是加密变换的逆变换
16,证明:U属于Zn,并且U的逆对N的模运算是存在——》god(u,n)=1——》U属于Z*n
P94,定理5.7的证明