Python和GO語言實現的訊息摘要演算法示例

Python和GO語言實現的訊息摘要演算法示例

常用的訊息摘要演算法有MD5和SHA,這些演算法在python和go的庫中都有,需要時候呼叫下就OK了,這裡總結下python和go的實現。

一、python訊息摘要示例

程式碼如下:
複製程式碼 程式碼如下:
#! /usr/bin/python
”’
      File      : testHash.py
      Author    : Mike
      E-Mail    : [email protected]
”’
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    : [email protected]
*/
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做一遍。這裡總結下,方便以後使用。

您可能感興趣的文章:

Golang排列組合演算法問題之全排列實現方法Golang正整數指定規則排序演算法問題分析Golang最大遞減數演算法問題分析Go語言展現快速排序演算法全過程的思路及程式碼示例深入解析快速排序演算法的原理及其Go語言版實現GO語言利用K近鄰演算法實現小說鑑黃Go語言實現漢諾塔演算法Go語言通過Luhn演算法驗證信用卡卡號是否有效的方法go語言睡眠排序演算法例項分析Go語言實現AzDG可逆加密演算法例項Go語言實現的樹形結構資料比較演算法例項Go語言演算法之尋找陣列第二大元素的方法Golang演算法之田忌賽馬問題實現方法分析