Python模块学习 ---- hashlib hash加密

不积跬步,无以至千里;不积小流,何以成江海.

  每天学习一个Python模块,一个月可以了解30个模块,一年可以... ...

  今天看了一个Python中的hashlib及hmac模块,这两个模块用来hash加密。说到加密,首先要了解加密的基本知识:hash加密,对称加密,不对称加密,数字签名等等。相关的知识可以在msdn上查阅:http://msdn.microsoft.com/zh-cn/library/92f9ye3s.aspx 

  使用Python中的hashlib来进行hash加密是非学简单的,下面是一段简单代码:

  1. import hashlib  
  2. md5 = hashlib.md5() #创建一个MD5加密对象  
  3. md5.update("JGood is a handsome boy")  #更新要加密的数据  
  4. print md5.digest()  #加密后的结果(二进制)  
  5. print md5.hexdigest() #加密后的结果,用十六进制字符串表示。  
  6. print 'block_size:', md5.block_size  
  7. print 'digest_size:', md5.digest_size  

  非常的简单,其实如果说加密一个字符串,根本不用写上面这么多代码,一条语句就可以了:
  1. print '-' * 25'更简洁的语法''-' * 25  
  2. print hashlib.new("md5""JGood is a handsome boy").hexdigest()  

  hashlib模块还支持其他的hash加密算法,如:sha1, SHA224等等,要了解更多的知识,查一下Python手册。

 

Python hash VS .NEt hash   

  我出身是一个.NET程序员,以前也写过一些.NET下的hash加密类,在.NET中可以使用以下代码来实现MD5加密算法,其实也不是很难: 

  1. /// <summary>  
  2. /// 按指定加密算法,对字符串进行加密  
  3. /// </summary>  
  4. /// <param name="hashName">加密算法名称</param>  
  5. /// <param name="data">要加密数据</param>  
  6. /// <returns>加密后的数据</returns>  
  7. private static string Encrypt(string hashName, string data)  
  8. {  
  9.     byte[] btData = System.Text.Encoding.ASCII.GetBytes(data);  
  10.     //创建一个 HashAlgorithm派生类的实例  
  11.     HashAlgorithm hasher = HashAlgorithm.Create(hashName);  
  12.     //使用hash加密  
  13.     byte[] hashedData = hasher.ComputeHash(btData);  
  14.     StringBuilder result = new StringBuilder();  
  15.     foreach (byte b in hashedData)  
  16.     {  
  17.         result.Append(b.ToString("x2"));    //转换成16进制字符串保存  
  18.     }  
  19.     return result.ToString();  
  20. }  
  

 附上用.NET编写的常用hash加密算法代码:

From:http://blog.csdn.net/jgood/article/details/4276398

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值