您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/3/16 12:56:31发布18次查看
常用的消息摘要算法有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 mainimport (
        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做一遍。这里总结下,方便以后使用。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product