Golang计算md5值的方法都是接收byte型slice([]byte)。而且使用习惯上也觉得略奇怪。

看了好几个例子才看懂。

感觉Golang标准库在设计这些模块的时候,都会考虑使用带New关键字工厂生成一个该类型的结构体对象。然后再使用改对象的方法进行操作。

md5包就是这样,来看例子:

s := "api_key" + ApiKey + "param" + Param + "time" + time + "version" + version + ApiSecret
signByte := []byte(s)
hash := md5.New()
hash.Write(signByte)
return hex.EncodeToString(hash.Sum(nil))

第一行我拼接了一个字符串。

第二行我将这个字符串转成byte型数组并赋值给了sighByte。

第三行我new了一个md5的实现了hash.Hash的结构体。

第四行我调用这个结构体的方法Write将我需要计算md5的[]byte传入进去。

第五行我调用hex.EncodeToSring方法来把计算结果转换成16进制字符串。其中hash.Sum(nil)方法可以生成前面Write进去的signByte变量的128bit md5值。这个hash.Sum方法并不是我们在操作其它语言的那种使用习惯,将值传递进去然后返回hash,这里其实是追加一个值一并生成hash。由于我们不需要再追加值了,所以传入nil得到signByte的hash值。

Reference:

http://stackoverflow.com/questions/24234322/golang-md5-sum-function  golang-md5-sum-function

Golang的md5 hash计算的更多相关文章

  1. C# 实现MD5 Hash 计算

    C#提供了一系列的加密库,可以让我们自由使用,这里我来介绍如何使用C#的加密库实现MD5 hash值的计算工作. 参考代码: private static String CalcMd5(String ...

  2. java计算过G文件md5 值计算

    package io.bigdata; import java.io.File; import java.io.FileInputStream; import java.io.IOException; ...

  3. (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通

    一.注意要点 1:输入字符串的的编码双方保持统一,如:UTF8: 2:HASH计算输出结果 byte[] 数组转String 时,编码要统一,如:转16进制小写字符串.当然也可以转Base64. 3: ...

  4. 如何在C#中生成与PHP一样的MD5 Hash Code

    最近在对一个现有的系统进行C#改造,该系统以前是用PHP做的,后台的管理员登陆用的是MD5加密算法.在PHP中,要对一个字符串进行MD5加密非常简单,一行代码即可: md5("Somethi ...

  5. 字符串、字节数组、流之间的相互转换以及文件MD5的计算

    using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace myMe ...

  6. 【数据结构】30、hashmap=》hash 计算方式

    前提知识 写在前面,为什么num&(length - 1) 在length是2的n次幂的时候等价于num%length n - 1意味着比n最高位小的位都为1,而高的位都为0,因此通过与可以剔 ...

  7. 【Golang 接口自动化06】微信支付md5签名计算及其优化

    前言 可能看过我博客的朋友知道我主要是做的支付这一块的测试工作.而我们都知道现在比较流行的支付方式就是微信支付和支付宝支付,当然最近在使用低手续费大力推广的京东金融(已改名为京东数科)以后也可能站到第 ...

  8. golang 的md5加密

    先看实现代码: package main import (     "crypto/md5"     "encoding/hex"     "fmt& ...

  9. md5值计算

    1.md5(Message Digest 5th/消息概要加密算法 第5版) REFER: MD5 On wikipedia 2.应用范围 ① 验证下载文件的完整性 ② 3.关于MD5的几个问题 ①只 ...

随机推荐

  1. Ansible 拷贝文件或目录

    写法如下: [root@localhost ~]$ ansible 192.168.119.134 -m copy -a "src=/etc/passwd dest=/tmp/passwd ...

  2. 005_python中的构造函数和析构函数

    python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这 ...

  3. ③---Java项目管理工具MAVEN安装与配置

    Java项目管理工具MAVEN安装配置以下将为大家介绍Java项目管理工具MAVEN安装及其配置. 一.下载MAVEN安装文件 maven下载地址:https://maven.apache.org/d ...

  4. (5)HomeAssistant mqtt-433-esp8266-arduino-传感器

    Home Assistant Integrations使用 https://github.com/1technophile/OpenMQTTGateway/wiki/Home-assistant-in ...

  5. solidity learning (1)

    学习文档笔记:http://solidity-cn.readthedocs.io/zh/develop/layout-of-source-files.html 1.pragma solidity ^0 ...

  6. docker 11 docker的commit操作

    docker commit :表示提交一个容器的副本使之成为新的镜像.假如我们在docker上运行了一个tomcat的容器,对Tomcat容器进行了修改操作,然后我们将修改操作后的tomcat进行co ...

  7. ajax全局事件

    作用:当你的页面存在很多ajax事件的话,我们有一些信息是公共的,可以复用,我们可以用全局事件进行编写,因为每一个ajax事件调用,都会触发ajax全局事件. jquery的ajax方法的全部全局事件 ...

  8. Asp.net中web.config配置文件详解(二)

    摘自http://blog.csdn.net/hbqhdlc/article/details/8155668 近日正在看Asp.net,看到Web.config有很不清楚之处,特意从网络.MSDN搜集 ...

  9. LOJ2527 HAOI2018 染色 容斥、生成函数、多项式求逆

    传送门 调了1h竟然是因为1004535809写成了998244353 "恰好有\(K\)种颜色出现了\(S\)次"的限制似乎并不容易达到,考虑容斥计算. 令\(c_j\)表示强制 ...

  10. 使用Filter过滤器+重写Request完美解决乱码问题

    一:原理 1.对于Post方式提交的数据,我们可以通过直接设置request和response的编码方式来解决乱码问题:但是Get方式提交的数据,那么就需要编码再解码的方式解决乱码问题. 2.我们一般 ...