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的Flask框架下收发电子邮件的教程
Apr 21 Python
python实现中文输出的两种方法
May 09 Python
Python中的random()方法的使用介绍
May 15 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
python 中字典嵌套列表的方法
Jul 03 Python
python实现QQ批量登录功能
Jun 19 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 Python
python中pygame安装过程(超级详细)
Aug 04 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
什么是Python中的顺序表
Jun 02 Python
python代码实现猜拳小游戏
Nov 30 Python
python使用yaml 管理selenium元素的示例
Dec 01 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存储过程的方法集合(推荐)
2013/07/03 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
python操作sqlite的CRUD实例分析
2015/05/08 Python
详解django自定义中间件处理
2018/11/21 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
接受捐赠答谢词
2014/01/27 职场文书
学生会离职感言
2014/02/11 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
大学入学感言
2015/08/01 职场文书
小学大队委竞选口号
2015/12/25 职场文书
python之json文件转xml文件案例讲解
2021/08/07 Python
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis