一些加密机制

来源:互联网 发布:中国 中子弹 知乎 编辑:程序博客网 时间:2024/06/02 18:28

我们知道加密技术是信息安全的重要组成部分,

那么对加密技术的理解就显得很重要.所以要来比较几种不同

加密技术,更好的理解安全技术.

 

一.古典加密体制.

古典加密体制最基本的算法是替代算法和置换移位算法
替代算法:
最经典的凯撒加密:
就是后移N位实现,使用python(一种跨平台的脚本语言)实现凯撒加密:
 
Code.py:
 
#!/usr/bin/env pythonastring='abcdefghijklmnopqrstuvwxyz'alist=[i for i in range(0,26)]adict=dict(zip(astring,alist))print adictdef 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
yz'
alist=[i for i in range(0,26)]
adict=dict(zip(astring,alist))


def code(infile,outfile):
 
   num=0
 
   out=open(outfile,'w')
 
   fd=open(infile)
 
   for i in fd:
 
      line=''
 
      for c in i:
 
            if c.isalpha():
 
                  num+=1
 
                  line+=astring[(adict[c.lower()]+codekey[num%5-1])&]
 
            else:
 
                  line+=c
 
      out.write(line)
 
   fd.close()
 
   out.close()              
      
code("/root/Desktop/f",'/root/Desktop/o')

 

短语替代的加密:

 

Code3.py:

 

 

#!/usr/bin/env python
codekey="hapynewr"
alist=list('abcdefghijklmnopqrstuvwx
yz')
code=list('hapynewrbcdfgijklmoqstuv
xz')
print len(code)
adict=dict(zip(alist,code))

def code(filename,outname):
 
   out=open(outname,'w')
 
   fd=open(filename)
 
   for i in fd:
 
      line=''
 
      for c in i:
 
            if c.isalpha():
 
                  line+=(adict[c.lower()])
 
            else:
 
                  line+=c
 
      out.write(line)
 
   fd.close()
 
   out.close()              
      
code("/root/Desktop/f",'/root/Desktop/o')

 

以上可以看出,古典密码的实现简单,那么安全性肯定不高,可以通过频度分析和简单的暴力穷举攻击.属于比较古典(朴素)的加密.

 

 

二.对称加密

发送方将明文和密钥经过处理后变为密文.接受方要想解密,则

需要使用加密算法的逆算法进行解密,也就需要事前知道密钥.

特点:

算法公开,计算量小,效率高

但是需要使用的密钥过多,密钥管理太难,不适合分布式应用

具体算法有:

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


原创粉丝点击