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中用startswith()函数判断字符串开头的教程
Apr 07 Python
Python批量重命名同一文件夹下文件的方法
May 25 Python
构建Python包的五个简单准则简介
Jun 15 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
python实现简单登陆系统
Oct 18 Python
python实践项目之监控当前联网状态详情
May 23 Python
python数据预处理之数据标准化的几种处理方式
Jul 17 Python
django的model操作汇整详解
Jul 26 Python
python的常见矩阵运算(小结)
Aug 07 Python
Python API len函数操作过程解析
Mar 05 Python
Python爬虫爬取新闻资讯案例详解
Jul 14 Python
详解python字符串驻留技术
May 21 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简单计算两个时间差的方法示例
2017/06/20 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
javascript call方法使用说明
2010/01/11 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
python ubplot使用方法解析
2020/01/10 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
如何真正的了解python装饰器
2020/08/14 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
学生自我鉴定模板
2013/12/30 职场文书
毕业生个人求职信范文分享
2014/01/05 职场文书
会计专业大学生职业生涯规划书
2014/02/11 职场文书
临时租车协议范本
2014/09/23 职场文书
2014年维稳工作总结
2014/11/18 职场文书
检讨书怎么写
2015/01/23 职场文书
开除员工通知
2015/04/22 职场文书
欢迎新生标语2015
2015/07/16 职场文书
七年级英语教学反思
2016/02/15 职场文书
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android