Python和GO语言实现的消息摘要算法示例


Posted in Python onMarch 10, 2015

常用的消息摘要算法有MD5和SHA,这些算法在python和go的库中都有,需要时候调用下就OK了,这里总结下python和go的实现。

一、python消息摘要示例

代码如下:

#! /usr/bin/python

'''

      File      : testHash.py

      Author    : Mike

      E-Mail    : Mike_Zhang@live.com

'''

import hashlib

src = raw_input("Input string : ")

funcNameList = ["MD5","SHA1","SHA224","SHA256","SHA384","SHA512"]

funcMap = {

"MD5"            :      lambda cnt : hashlib.md5(cnt).hexdigest(),

"SHA1"           :      lambda cnt : hashlib.sha1(cnt).hexdigest(),

"SHA224"         :      lambda cnt : hashlib.sha224(cnt).hexdigest(),

"SHA256"         :      lambda cnt : hashlib.sha256(cnt).hexdigest(),

"SHA384"         :      lambda cnt : hashlib.sha384(cnt).hexdigest(),

"SHA512"         :      lambda cnt : hashlib.sha512(cnt).hexdigest()

}

for funcName in funcNameList :

        print funcName,"\t:\t",funcMap[funcName](src)

运行效果:

Python和GO语言实现的消息摘要算法示例

二、go语言消息摘要示例

代码如下:

/*

      File      : hashTest.go

      Author    : Mike

      E-Mail    : Mike_Zhang@live.com

*/

package main
import (

        "fmt"

        "crypto/md5"

        "crypto/sha1"

        "crypto/sha256"

        "crypto/sha512"

        "hash"

)
func main() {

        funcNameList := []string{"MD5","SHA1","SHA224","SHA256","SHA384","SHA512"}

        funcMap := map[string]func(msg []byte) hash.Hash{

        "MD5"           :   func(msg []byte) hash.Hash{var h hash.Hash = md5.New();h.Write(msg);return h},

        "SHA1"          :   func(msg []byte) hash.Hash{var h hash.Hash = sha1.New();h.Write(msg);return h},

        "SHA224"        :   func(msg []byte) hash.Hash{var h hash.Hash = sha256.New224();h.Write(msg);return h},

        "SHA256"        :   func(msg []byte) hash.Hash{var h hash.Hash = sha256.New();h.Write(msg);return h},

        "SHA384"        :   func(msg []byte) hash.Hash{var h hash.Hash = sha512.New384();h.Write(msg);return h},

        "SHA512"        :   func(msg []byte) hash.Hash{var h hash.Hash = sha512.New();h.Write(msg);return h},

        }

        fmt.Printf("Input string : ")

        var msg1 string

        fmt.Scanf("%s",&msg1)

        for _,funcName := range funcNameList{

                fmt.Printf("%s \t:\t %x\n",funcName,funcMap[funcName]([]byte(msg1)).Sum())

        }

}

运行效果:

Python和GO语言实现的消息摘要算法示例

哈哈,是不是发现上面两组程序的代码结构相同啊,其实我就是想借助python来学习go语言的:先用python很轻巧的实现一个功能,我再考虑用go做一遍。这里总结下,方便以后使用。

Python 相关文章推荐
python Django连接MySQL数据库做增删改查
Nov 07 Python
python基础教程之缩进介绍
Aug 29 Python
python的re模块应用实例
Sep 26 Python
python将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 Python
Python复数属性和方法运算操作示例
Jul 21 Python
分享一个简单的python读写文件脚本
Nov 25 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
Python 控制终端输出文字的实例
Jul 12 Python
python简单的三元一次方程求解实例
Apr 02 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
python 对图片进行简单的处理
Jun 23 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 #Python
Python脚本实现代码行数统计代码分享
Mar 10 #Python
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 #Python
Python自动化构建工具scons使用入门笔记
Mar 10 #Python
Python操作CouchDB数据库简单示例
Mar 10 #Python
Python性能优化技巧
Mar 09 #Python
Python中的赋值、浅拷贝、深拷贝介绍
Mar 09 #Python
You might like
PHP实现MySQL更新记录的代码
2008/06/07 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
js控制随机数生成概率代码实例
2019/03/21 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Python中最大递归深度值的探讨
2019/03/05 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
竞选班干部演讲稿600字
2014/08/20 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
公司收款委托书范本
2014/09/20 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
患者身份识别制度
2015/08/06 职场文书
宝宝满月祝酒词
2015/08/10 职场文书