维吉尼亚密码.docx
- 文档编号:5375259
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:18
- 大小:27.72KB
维吉尼亚密码.docx
《维吉尼亚密码.docx》由会员分享,可在线阅读,更多相关《维吉尼亚密码.docx(18页珍藏版)》请在冰豆网上搜索。
维吉尼亚密码
《网络与信息安全》课程设计报告
班级:
网络07-1班
学号:
310709040101
姓名:
陈友娜
题目:
加密软件设计
评阅:
成绩:
摘要
使用维吉尼亚密码加密只是众多密码加密方法中的一个,本设计是基于维吉尼亚密码的一种扩展,能起到更强的加密,完成所有属于ACSII的加密,本人主要负责设计的规划,程序设计,界面设计,报告的完成等工作,整个程序是Java平台下实现的。
本次设计方法的原理以及方法仍然以维吉尼亚通用的方法来介绍。
关键词:
维吉尼亚加密,密钥,加密,解密。
一、密码分析及密码系统设计原则
对通信双方而言,通信的一方将信息加密后发送给另一方,是为了使攻击者即使得到密文也无法读懂。
对于攻击者来说,在不知道密钥的情况下,要想读懂密文,就要根据他的知识以及掌握的情报来进行密码分析。
密码分析是研究密钥未知的情况下恢复明文的科学。
通常假设攻击者知道正在使用的密码体制,当然,如果分析者不知道正在使用的密码体制,分析起来将更加困难。
成功的密码分析可能直接恢复明文或密钥,也可能找出保密系统的弱点来恢复明文或密钥。
根据攻击者具有的知识和掌握的情报,可以将密码分析分为以下几种类型:
(1)只有密文的攻击。
攻击者有一些密文,它们是使用同一加密算法和同一密钥加密的。
(2)已知明文的攻击。
攻击者不仅得到一些密文,而且能得到这些密文对应的明文。
(3)选择明文的攻击。
攻击者不仅得到一些密文和对应明文,而且能选择用于加密的明文。
(4)选择密文的攻击。
攻击者可以选择不同的密文来解密,并能得到解密后的明文。
在每种情况下,攻击者的目标是确定正在使用的密钥或待破译密文所对应的明文。
上述几种攻击方式是以强度递增排列的,只有密文的攻击是最容易防护的攻击。
然而,目前最常见的是已知明文和选择明文的攻击。
事实上,攻击者欲得到一些明、密文对或加密一些选择好的明文并不困难,攻击者可以知道很多信息具有标准的头部和尾部。
一般来说,密码系统应该经得起已知明文的攻击。
密码系统的安全依赖于破译该系统的困难程度。
如果破译一个密码系统的费用超过了被加密数据本身的价值,或者破译所需的时间超过了被加密数据所需保密的时间,或者由一个密码系统加密的数据少于破译该算法所需的数据量,就可以认为这个系统是安全的。
如果攻击者无论得到多少密文,都没有足够的信息去恢复明文,那么该密码系统就是无条件安全的。
在理论上,只有一次一密的系统才能真正实现这一点。
除此之外的系统都至少可以使用只有密文的攻击来破译。
设计密码系统必须至少满足下面的一个准则:
(1)破译该密码的成本超过被加密信息的价值;
(2)破译该密码的时间超过被加密信息的生命周期。
如果一个密码系统能够满足上述准则,就认为该系统在计算上是安全的。
然而困难之处就在于难以估计成功破译密码的努力有多大。
只能使设计的密码系统抗击已知的攻击,尤其要能抗击穷举密钥攻击,即强力攻击。
穷举密钥攻击方法是对截获的密文用所有可能的密钥解密,直到得到有意义的明文为止。
从理论上来说,除了一次一密密码系统,其它任何密码系统都可以用穷举密钥攻击法破解,但实际上,任何一个实用的密码设计都会使这一方法在计算上失去可行性。
密码分析方法可以分为确定性和统计性两类。
确定性分析法是利用若干已知数学关系式表示出所求的未知量,这种关系式是从加密和解密算法得来的;统计分析法则是利用明文的已知统计规律进行破译的方法。
例如经典密码分析的许多技术利用了英文语言的统计特性。
通过分析英文字母中单字母、双字母、三字母组合出现的频率并通过猜词法达到破译密码的目的。
二、维吉尼亚密码
(一)维吉尼亚密码的介绍
维吉尼亚密码多表代换密码中最著名的一种,这是以移位代换为基础的周期代换密码,m个移位代换表由m个字母组成的密钥字确定(这里假设密钥学中的M个字母不同,如果有相同的,则代换表的个数是密钥字中不同字母的个数)
如果密钥字为deceptive,
明文wearediscoveredsaveyouselelf被加密为:
明文:
wearediscoverdsaveyouselelf
密钥:
deceptivedeceptivedeceptive
其中,密钥字母a,b,c…y,z对应数字0,1,2…24,25。
密钥字母d对应数字3,因此明文字母W在密钥字母d的作用下向后移位3,得到密文字母Z。
例子:
q=26,明文x=polyalphabeticcipher,
K=radio
明文x=polyalphabeticcipher
密钥k=radioradioradioradio
密文y=googocpktpntlkqzpkmf
解密时,密文字母在密钥字母的作用下向前移位。
用算法表示:
加密:
C=(m+k)mod26
解密:
m=(c-k)mod26
设d为一固定的正整数,d个移位代换表π=(π1,π2,…πd),由密钥序列K=(k1,k2,…,kd)给定,第i+td个明文字母由表πi决定,即密钥ki决定
ek(xi+td)=(xi+td+ki)modq=y
dk(yi+td)=(yi+td-ki)modq=x
(二)维吉尼亚密码的原理
比如明文为JACKOZOO,秘匙为LOVE,则我们的密文是这样得到的:
J对应的密文我们查秘匙为L,则在第L行中,找到与第一行中的J对应的字母为U.
A对应的密文我们查秘匙为O,则在第O行中,找到与第一行中的A对应的字母为O.
C对应的密文我们查秘匙为V,则在第V行中,找到与第一行中的C对应的字母为X.
K对应的密文我们查秘匙为E,则在第E行中,找到与第一行中的K对应的字母为O.
O对应的密文我们查秘匙为L,则在第L行中,找到与第一行中的O对应的字母为Z.(如果秘匙不够了,我们就循环使用秘匙,LOVELOVELO...)
Z对应的密文我们查秘匙为O,则在第O行中,找到与第一行中的Z对应的字母为N.
O对应的密文我们查秘匙为V,则在第V行中,找到与第一行中的O对应的字母为J.
O对应的密文我们查秘匙为E,则在第E行中,找到与第一行中的O对应的字母为S.
由此得到JACKOZOO在以LOVE作为秘匙的情况下,其密文为:
UOXOZNJS.
我们看到维吉尼亚密码也很好地隐藏了字频信息.
但是这里不得不提的是,维吉尼亚密码(VigenereCipher)相对于希尔密码(HillCipher)来说,其对字频信息的隐藏还不够彻底.
这也导致了在19世纪50年代,英国人查尔斯-巴贝奇对其的破解.其实其破解的基本思想如下:
比如在密文中,经常出现了同一个子串(比如UPK),而且每个字串之间的距离都是3的整数倍.那么解密者就很容易推测出秘匙的长度为3.其原因也是十分简单的:
当秘匙在重复了N次之后,其还是用第一个字母去加密UPK相应的明文.尤其是对THE,YOU,WHAT这类高频词汇当使用了弱秘匙的话,更容易遭受破解.关于维吉
尼亚密码的具体破解工作,不在本文范围之内,有兴趣的朋友可以自行研究.
以上介绍的是维吉尼亚密码的加密,解密的话,直接找出相应行在第一行中对应的字母即可
密钥的选取
在维吉尼亚密码中,如果密钥的长度是m,明文中的一个字母能够映成这m个可能的字母中的一个,容易看出维吉尼亚密码中长度为m的可能密钥字的个数是26的m次方,甚至对于一个较小的m值,如m=5,密钥空间超过了1.1乘以10的7次方,这个空间已经足已阻止手工穷举密钥的搜索。
为方便记忆,维吉尼亚密码的密钥字常常取于英文中的一个单词,一个句子或一段文章。
因此,维吉尼亚密码的明文和密钥字母频率分布相同,仍然能够用统计技术进行分析。
要抗击这样的密码分析,只有选择与明文长度相同并与之没有统计关系的密钥内容。
1918年美国电报电话公司的G。
W。
Vernam提出这样的密码系统:
明文英文字母编成5比特二元数字,称之为五单元波多代换码,选择随机二元数字流作为密钥,加密通过执行明文和密钥的逐位异或操作,产生密文,可以简单地表示为Ci=Pi异或Ki
其中,Pi表示明文的第i个二元数字,Ki表示密钥的第i个二元数字,Ci表示密文的第i个二元数字,解密仅需执行相同的逐位异或操作:
Pi=Ci异或Ki
Vernam密码系统的密钥若不重复使用,就能得到一次一密码。
若密钥有重复,尽管使用长密钥增加了密码分析的难度,但只要有了足够的密文,使用已知的或可能的明文序列,或二者相结合也能够破译。
在维吉尼亚密码中,明文中的字符映射到密文空间的字符不但依赖于明文字符,还依赖于它在上下文中的位置。
但是在密文中依然保留了字符频率。
根据某些统计信息破译该密码的关键是判断密钥的长度,即代换表的周期。
(三)维吉尼亚密码-特点
人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。
它是由16世纪法国亨利三世王朝的布莱瑟·维吉尼亚发明的,其特点是将26个恺撒密表合成一个,见下表:
ABCDFGHIJKLMNOPQRSTUVWXYZ
AABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZA
CCDEFGHIJKLMNOPQRSTUVWXYZAB
DDEFGHIJKLMNOPQRSTUVWXYZABC
EEFGHIJKLMNOPQRSTUVWXYZABCD
FFGHIJKLMNOPQRSTUVWXYZABCDE
GGHIJKLMNOPQRSTUVWXYZABCDEF
HHIJKLMNOPQRSTUVWXYZABCDEFG
IIJKLMNOPQRSTUVWXYZABCDEFGH
JJKLMNOPQRSTUVWXYZABCDEFGHI
KKLMNOPQRSTUVWXYZABCDEFGHIJ
LLMNOPQRSTUVWXYZABCDEFGHIJK
MMNOPQRSTUVWXYZABCDEFGHIJKL
NNOPQRSTUVWXYZABCDEFGHIJKLM
OOPQRSTUVWXYZABCDEFGHIJKLMN
PPQRSTUVWXYZABCDEFGHIJKLMNO
QQRSTUVWXYZABCDEFGHIJKLMNOP
RRSTUVWXYZABCDEFGHIJKLMNOPQ
SSTUVWXYZABCDEFGHIJKLMNOPQR
TTUVWXYZABCDEFGHIJKLMNOPQRS
UUVWXYZABCDEFGHIJKLMNOPQRST
VVWXYZABCDEFGHIJKLMNOPQRSTU
WWXYZABCDEFGHIJKLMNOPQRSTUV
XXYZABCDEFGHIJKLMNOPQRSTUVW
YYZABCDEFGHIJKLMNOPQRSTUVWX
ZZABCDEFGHIJKLMNOPQRSTUVWXY
密钥
维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。
假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
TOBEORNOTTOBETHATISTHEQUESTION
当选定RELATIONS作为密钥时,加密过程是:
明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
密钥:
RELATIONSRELATIONSRELATIONSREL
明文:
TOBEORNOTTOBETHATISTHEQUESTION
密文:
KSMEHZBBLKSMEMPOGAJXSEJCSFLZSY
(四)维吉尼亚密码的演变
历史上以维吉尼亚密表为基础又演变出很多种加密方法,其基本元素无非是密表与密钥,并一直沿用到二战以后的初级电子密码机上。
公元16世纪晚期,想要获得更高的保密度的人获得了一种设计更加精细的密码表。
法国外交家BlaisedeVigenère发明了一种方法来对同一条信息中的不同字母用不同的密码进行加密。
这样,同样的E在一个位置可能被M所取代,而在另一个位置的E则有可能以K的面目出现。
这样,就可以防止任何人利用频率分析法解密该条信息。
(五)维吉尼亚密码下的扩展
为了能更多的加密字符,本次设计把维吉尼亚密钥个数增加到ASC码中的所有的英文字母大小字符,希望能加密更多的软件,所有的原理和加密方法和维吉尼亚的一样,只是密钥扩展了一下,所用的公式也改变一下,下面提供了,ASC与十进制的对应,在加密的时候能起到一定的帮助作用,此加密功能相当维吉尼亚更具有安全性,对照表如下:
十进制
字符
64
@
65
A
66
B
67
C
68
D
69
E
70
F
71
G
72
H
73
I
74
J
75
K
76
L
77
M
78
N
79
O
80
P
81
Q
82
R
83
S
84
T
85
U
86
V
87
W
88
X
89
Y
90
Z
91
[
92
\
93
]
94
^
95
_
96
'
97
a
98
b
99
c
100
d
101
e
102
f
103
g
104
h
105
i
106
j
107
k
108
l
109
m
110
n
111
o
112
p
113
q
114
r
115
s
116
t
117
u
118
v
119
w
120
x
121
y
122
z
123
{
124
|
125
}
126
~
127
del
软件和界面组合的程序
packagechen;
importjava.awt.*;
importjavax.swing.*;
importjavax.swing.border.TitledBorder;
importjava.awt.event.*;
publicclassChenextendsJFrameimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privateJLabelke1=newJLabel("");
privateJLabelke2=newJLabel("");
privateJLabelke3=newJLabel("");
privateJLabelke4=newJLabel("");
privateJLabelke5=newJLabel("");
privateJLabelke6=newJLabel("");
privateJLabelmn=newJLabel("输入明文");
privateJLabelmo=newJLabel("输入密钥");
privateJLabelmt=newJLabel("加密结果");
privateJButtonji=newJButton("加密");
privateJLabelmiWen=newJLabel("输入密文");
privateJLabelmiYao2=newJLabel("输入密钥");
privateJLabelmingWenoutput=newJLabel("解密结果");
privateJButtonjiemi=newJButton("解密");
privateJTextAreatextOne=newJTextArea(1,2);
privateJTextAreatextTwo=newJTextArea(1,2);
privateJTextAreatextThree=newJTextArea(1,2);
privateJTextAreat4=newJTextArea(1,2);
privateJTextAreatextFive=newJTextArea(1,2);
privateJTextAreatextSix=newJTextArea(1,2);
inti;
char[]c=newchar[100];
char[]k1=newchar[100];
intj;
char[]m=newchar[100];
char[]k12=newchar[100];
publicChen(){
super("维吉尼亚");
ji.addActionListener(this);
jiemi.addActionListener(this);
addWindowListener(listen);
pack();
setVisible(true);
setSize(400,330);
}
publicvoidset(){
JPanelmingwenInput=newJPanel();
mingwenInput.setLayout(newBorderLayout());
mingwenInput.add("West",mn);mingwenInput.add("Center",textOne);
mingwenInput.add("East",ke1);
JPanelmiyaoInput=newJPanel();
miyaoInput.setLayout(newBorderLayout());
miyaoInput.add("West",mo);miyaoInput.add("Center",textTwo);
miyaoInput.add("East",ke2);
JPanelmiwenOutput=newJPanel();
miwenOutput.setLayout(newBorderLayout());
miwenOutput.add("West",mt);
miwenOutput.add("Center",textThree);
miwenOutput.add("East",ke3);
JPanelshangzhong=newJPanel();
GridLayouts=newGridLayout(3,1);
s.setVgap(5);
shangzhong.setBackground(Color.gray);
shangzhong.setLayout(s);
shangzhong.add(mingwenInput);shangzhong.add(miyaoInput);
shangzhong.add(miwenOutput);
JPanelbuttons=newJPanel();
buttons.setLayout(newBorderLayout());
buttons.add("Center",ji);
JPanelshangmianban=newJPanel();
shangmianban.setLayout(newBorderLayout());
shangmianban.setBackground(Color.green);
shangmianban.add("Center",shangzhong);
shangmianban.add("East",buttons);
JPanelmiwenInput=newJPanel();
miwenInput.setLayout(newBorderLayout());
miwenInput.add("West",miWen);miwenInput.add("Center",t4);miwenInput.add("East",ke4);
JPanelmiyaoxiaInput=newJPanel();
miyaoxiaInput.setLayout(newBorderLayout());
miyaoxiaInput.add("West",miYao2);miyaoxiaInput.add("Center",textFive);
miyaoxiaInput.add("East",ke5);
JPanelmingwenOutput=newJPanel();
mingwenOutput.setLayout(newBorderLayout());
mingwenOutput.add("West",mingWenoutput);mingwenOutput.add("Center",textSix);mingwenOutput.add("East",ke6);
JPanelxiazhong=newJPanel();
GridLayoutsz=newGridLayout(3,1);
sz.setVgap(5);
shangmianban.setBorde
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 维吉尼亚 密码