欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-01-01 18:35:57
常用的消息摘要算法有md5和sha,这些算法在python和go的库中都有,需要时候调用下就ok了,这里总结下python和go的实现。 一、python消息摘要示例...

常用的消息摘要算法有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做一遍。这里总结下,方便以后使用。