我们知道加密技术是信息安全的重要组成部分,
那么对加密技术的理解就显得很重要.所以要来比较几种不同
加密技术,更好的理解安全技术.
一.古典加密体制.
古典加密体制最基本的算法是替代算法和置换移位算法
替代算法:
最经典的凯撒加密:
就是后移N位实现,使用python(一种跨平台的脚本语言)实现凯撒加密:
Code.py:
#!/usr/bin/env python astring='abcdefghijklmnopqrstuvwxyz' alist=[i for i in range(0,26)] adict=dict(zip(astring,alist)) print adict def code(filename,outname): out=open(outname,'w') fd=open(filename) for i in fd: line='' for c in i: if c.isalpha(): line+=astring[(adict[c.lower()]+3)&] else: line+=c out.write(line) fd.close() out.close() code("/root/Desktop/f",'/root/Desktop/o')
维吉尼亚加密的实现:
Code2.py:
10.实现Vignere加密:
#!/usr/bin/env python
codekey=(21,4,2,19,14)
astring='abcdefghijklmnopqrstuvwx
alist=[i for i in range(0,26)]
adict=dict(zip(astring,alist))
def code(infile,outfile):
短语替代的加密:
Code3.py:
#!/usr/bin/env python
codekey="hapynewr"
alist=list('abcdefghijklmnopqrstuvwx
code=list('hapynewrbcdfgijklmoqstuv
print len(code)
adict=dict(zip(alist,code))
def code(filename,outname):
以上可以看出,古典密码的实现简单,那么安全性肯定不高,可以通过频度分析和简单的暴力穷举攻击.属于比较古典(朴素)的加密.
二.对称加密
发送方将明文和密钥经过处理后变为密文.接受方要想解密,则
需要使用加密算法的逆算法进行解密,也就需要事前知道密钥.
特点:
算法公开,计算量小,效率高
但是需要使用的密钥过多,密钥管理太难,不适合分布式应用
具体算法有:
DES, 3DES, RC,AES, Blowfish
在python中提供了crypt模块中有简单的DES应用实例.
三.非对称加密:
这类算法又称公开密钥加密算法,需要公钥和私钥
使用公钥加密时,只有对应的私钥才能解密,私钥加密,只用对应公钥解密,
过程:甲方生产一对密钥将一个用作公钥公开,得到公钥的乙方使用其私钥加密后给甲方,甲方在用和乙方对应的私钥解密.可以看出,其密钥管理大大容易了.而且消除了密钥交换过程.
原理:
A要和B发信,A和B都要有一对密钥
A的私钥保密,A的公钥告诉B,B的私钥保密,B的公钥 告诉A
A给B发信,A用B的公钥加密,A将密文给B
B用自己的私钥解密,其他人无法解密
主要算法:
RSA, Rabin, D-H