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程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
Python对list列表结构中的值进行去重的方法总结
May 07 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
PyQt5 pyqt多线程操作入门
May 05 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
详解python中__name__的意义以及作用
Aug 07 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
python设置环境变量的作用整理
Feb 17 Python
如何在python中处理配置文件代码实例
Sep 27 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
分享3个非常实用的 Python 模块
Mar 03 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 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
JavaScript 的继承
2011/10/01 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
Vue指令指令大全
2019/02/09 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python url 参数修改方法
2018/12/26 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
微信小程序python用户认证的实现
2019/07/29 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
工程质量月活动方案
2014/02/19 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
新员工入职感言范文!
2019/07/04 职场文书
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB