Golang实现字符串的MD5加密

MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

本文将使用golang自带的crypto/md5库实现MD5的字符串加密;

导入必要库:

import (
	"crypto/md5"
	"encoding/hex"
)

crypto/md5是自带的MD5函数库;而encoding/hex是一个将 byte切片转换成字符串的编码工具库。

实现:

func MD5(v string)string{
	d := []byte(v)
	m := md5.New()
	m.Write(d)
	return hex.EncodeToString(m.Sum(nil))
}

md5.New()返回一个hash.Hash对象;hash.Hash对象定义了一个Sum接口,其原型为:

func Sum(data []byte) [Size]byte

Sum()对hash.Hash对象内部存储的内容进行校验计算,然后将其追加到data的后面形成一个新的byte切片,所以一般需要将data设为nil。

hash.Hash对象的Write接口只接受 byte切片数据类型;

完整代码如下:

package main

import (
	"crypto/md5"
	"encoding/hex"

	"fmt"
)

func MD5(v string)string{
	d := []byte(v)
	m := md5.New()
	m.Write(d)
	return hex.EncodeToString(m.Sum(nil))
}

func main(){
	fmt.Println(MD5("123456"))
}

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/golang-md5.html

分类: 计算机技术
推荐阅读:
一条命令创建多级目录 在Linux系统下,如果你想创建一个诸如 a/b/c/d/e 这样的多级目录,可能有些新手会这样做:
C语言实现斐波那契数列 对于斐波那契数列,其下一个数字是前两个数字的和,例如:0、1、1、2、3、5、8、13、21等等;斐波那契数列的前两个数为0和1;使用C语言实现斐波那契数列的方法有两种,递归和无递归;
Rust语言中获取数组的大小 Rust语言中,数组提供len()方法可获取数组中的元素数量,即数组的大小;
Python isinstance()函数 在Python中,isinstance()函数用于判断一个对象是否是指定类或类型的实例。
如何将Rust更新到最新版 Rust每隔一段时间就会有新的版本,若要将已安装的Rust更新到最新版,并不用先卸载旧的版本,只需要使用 rustup 工具;
Python @classmethod装饰器 在 Python 中,@classmethod 是一个装饰器,用于将一个普通方法转换为类方法。装饰器是一种语法糖,它可以修改已有函数的行为而不修改其定义。@classmethod 装饰器通常用于在类中定义类方法。