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. 转://RMAN跨平台可传输表空间和数据库

    参考链接: http://blog.itpub.net/23135684/viewspace-776048/ http://blog.sina.com.cn/s/blog_69e7b8d7010164 ...

  2. 【转】Android动态破解微信本地数据库(EnMicroMsg.db)

    最近在公司接了一个任务,需要在几百台手机上安装一个app,目的是获取微信里面的通讯录,并且定时的把他发送到我们的服务器上.当时依次尝试的如下几个方案: 1.通过群控,将好友截图发送到服务端(pytho ...

  3. Python:Day13

    id() 查看内存地址 和while循环一样,在for循环中也可以使用break和continue,两者效果一样. repr

  4. sqlachemy 获取新创建对象的id,flush与commit

    for account_info in valid_account_detail: try: account = account_info.get('account') password = acco ...

  5. go struct{}的几种特殊用法

    参考:https://blog.csdn.net/kturing/article/details/80557280 1.声明为声明为map[string]struct{} 由于struct{}是空,不 ...

  6. 初学Python——函数

    一.函数定义 def name( parameters): #没有参数括号内可以为空 "函数描述" #其实就是注释 <代码块> return [expression] ...

  7. github 遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts问题解决

    刚开始使用github的时候不是很了解,新手一般的都会遇到这个问题Permanently added the RSA host key for IP address '192.30.252.128' ...

  8. Luogu P3379 【模板】最近公共祖先(LCA)

    qwq 预处理出从$x$节点向上跳2i个节点的序号$p[x][i]$及节点深度$dpth[x]$, 寻找$lca$时,从$Max$(可能的最大深度)到0枚举$i$, 首先把较深的一个节点向上跳至深度相 ...

  9. 在Sublime中配置JsFormat

    JsFormat配置文件: { // exposed jsbeautifier options "indent_with_tabs": false, // 保留换行符 " ...

  10. Spring Boot 之发送邮件

    Spring Boot 之发送邮件 简介 API 配置 实战 引入依赖 配置邮件属性 Java 代码 完整示例 引申和引用 简介 Spring Boot 收发邮件最简便方式是通过 spring-boo ...