码迷,mamicode.com
首页 > 编程语言 > 详细

[python]python学习笔记(七)——加密

时间:2015-01-20 21:53:50      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

1,python对字符串加密常见的方法:

 

[python] view plaincopy技术分享技术分享
 
  1. <pre code_snippet_id="340592" snippet_file_name="blog_20140512_1_2282504" name="code" class="python">1. 最简单的方法是用base64:       
  2.             
  3. import base64       
  4.             
  5. s1 = base64.encodestring(‘hello world‘)       
  6. s2 = base64.decodestring(s1)       
  7. print s1,s2       
  8.             
  9. # aGVsbG8gd29ybGQ=n       
  10. # hello world       
  11.             
  12. 注: 这是最简单的方法了,但是不够保险,因为如果别人拿到你的密文,也可以自己解密来得到明文;不过可以把密文字符串进行处理,如字母转换成数字或是特殊字符等,自己解密的时候在替换回去在进行base64.decodestring,这样要安全很多。       
  13.             
  14.             
  15.             
  16.             
  17. 2. 第二种方法是使用win32com.client       
  18.             
  19. import win32com.client       
  20. def encrypt(key,content): # key:密钥,content:明文       
  21.     EncryptedData = win32com.client.Dispatch(‘CAPICOM.EncryptedData‘)       
  22.     EncryptedData.Algorithm.KeyLength = 5  
  23.     EncryptedData.Algorithm.Name = 2  
  24.     EncryptedData.SetSecret(key)       
  25.     EncryptedData.Content = content       
  26.     return EncryptedData.Encrypt()       
  27.             
  28. def decrypt(key,content): # key:密钥,content:密文       
  29.     EncryptedData = win32com.client.Dispatch(‘CAPICOM.EncryptedData‘)       
  30.     EncryptedData.Algorithm.KeyLength = 5  
  31.     EncryptedData.Algorithm.Name = 2  
  32.     EncryptedData.SetSecret(key)       
  33.     EncryptedData.Decrypt(content)       
  34.     str = EncryptedData.Content       
  35.     return str  
  36.             
  37. s1 = encrypt(‘lovebread‘, ‘hello world‘)       
  38. s2 = decrypt(‘lovebread‘, s1)       
  39. print s1,s2       
  40.             
  41. # MGEGCSsGAQQBgjdYA6BUMFIGCisGAQQBgjdYAwGgRDBCAgMCAAECAmYBAgFABAgq       
  42. # GpllWj9cswQQh/fnBUZ6ijwKDTH9DLZmBgQYmfaZ3VFyS/lq391oDtjlcRFGnXpx       
  43. # lG7o       
  44. # hello world       
  45.              
  46.             
  47. 注:  这种方法也很方便,而且可以设置自己的密钥,比第一种方法更加安全,如果对安全级别要求不太高的话这种方法是加密解密的首选之策!       
  48.             
  49.              
  50.             
  51. 3. 还有就是自己写加密解密算法,比如:       
  52.             
  53. def encrypt(key, s):       
  54.     b = bytearray(str(s).encode("gbk"))       
  55.     n = len(b) # 求出 b 的字节数       
  56.     c = bytearray(n*2)       
  57.     j = 0  
  58.     for i in range(0, n):       
  59.         b1 = b[i]       
  60.         b2 = b1 ^ key # b1 = b2^ key       
  61.         c1 = b2 % 16  
  62.         c2 = b2 // 16 # b2 = c2*16 + c1       
  63.         c1 = c1 + 65  
  64.         c2 = c2 + 65 # c1,c2都是0~15之间的数,加上65就变成了A-P 的字符的编码       
  65.         c[j] = c1       
  66.         c[j+1] = c2       
  67.         j = j+2  
  68.     return c.decode("gbk")       
  69.             
  70. def decrypt(key, s):       
  71.     c = bytearray(str(s).encode("gbk"))       
  72.     n = len(c) # 计算 b 的字节数       
  73.     if n % 2 != 0 :       
  74.         return ""       
  75.     n = n // 2  
  76.     b = bytearray(n)       
  77.     j = 0  
  78.     for i in range(0, n):       
  79.         c1 = c[j]       
  80.         c2 = c[j+1]       
  81.         j = j+2  
  82.         c1 = c1 - 65  
  83.         c2 = c2 - 65  
  84.         b2 = c2*16 + c1       
  85.         b1 = b2^ key       
  86.         b[i]= b1       
  87.     try:       
  88.         return b.decode("gbk")       
  89.     except:       
  90.         return "failed"  
  91.             
  92. key = 15  
  93. s1 = encrypt(key, ‘hello world‘)       
  94. s2 = decrypt(key, s1)       
  95. print s1,‘n‘,s2        
  96.             
  97. # HGKGDGDGAGPCIHAGNHDGLG       
  98. # hello world       
  99.             
  100.             
  101. 注: 这是网上抄来的一个简单的例子,大家可以自定义自己算法进行加密解密;还有许许多多复杂的加密算法,大家可以自行查阅密码学的相关算法。       
  102.             
  103. 4.对于python来说,也可以把python源码文件编译成pyc二进制格式的文件,这样别人就看不到你的源码,也算是一种加密方法吧,方法如下:       
  104. 执行命令python -m py_compile create_slave.py 可以直接生成一个create_slave.pyc文件,然后可以用create_slave.pyc来替换create_slave.py作为脚本来执行。  

[python]python学习笔记(七)——加密

标签:

原文地址:http://www.cnblogs.com/zhiliao112/p/4237266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!