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写的Tkinter程序屏幕居中方法
Mar 10 Python
Python字符串逐字符或逐词反转方法
May 21 Python
python定时执行指定函数的方法
May 27 Python
python版学生管理系统
Jan 10 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
python+mysql实现个人论文管理系统
Oct 25 Python
Python模块future用法原理详解
Jan 20 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
解决import tensorflow as tf 出错的原因
Apr 16 Python
python中的错误如何查看
Jul 08 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 Python
python必学知识之文件操作(建议收藏)
May 30 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
php eval函数用法总结
2012/10/31 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
js数据类型检测总结
2018/08/05 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
Python3搜索及替换文件中文本的方法
2015/05/22 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
法学专业应届生求职信
2013/10/16 职场文书
初中校园之声广播稿
2014/01/15 职场文书
班级联欢会主持词
2015/07/03 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书