当前位置: 移动技术网 > IT编程>脚本编程>Python > Python和GO语言实现的消息摘要算法示例

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

2019年06月14日  | 移动技术网IT编程  | 我要评论

常用的消息摘要算法有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)

运行效果:

二、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做一遍。这里总结下,方便以后使用。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网