当前位置: 首页 > article >正文

Golang 编码(url,base64,hex,md5,sha-1)

1. URL 编码、解码

2. base64 编码、解码

3. hex 编码、解码

4. md5 编码

5. sha-1 编码

6. sha-256 编码

7. sha-512 编码

package main

import (
	"crypto/md5"
	"crypto/sha256"
	"crypto/sha512"
	"encoding/base64"
	"encoding/hex"
	"encoding/json"
	"fmt"
	"net/url"
)

// URL 编码
func UrlEncode(original string) (encoded string) {
	encoded = url.QueryEscape(original)
	return encoded
}

// URL 解码
func UrlDencode(original string) (decoded string, err error) {
	decoded, err = url.QueryUnescape(original)
	return
}

// base64 编码
func Base64Encode(original string) (encoded string) {
	encoded = base64.StdEncoding.EncodeToString([]byte(original))
	return encoded
}

// base64 解码
func Base64Decode(original string) (decoded string, err error) {
	dec_str, err := base64.StdEncoding.DecodeString(original)
	return string(dec_str), err
}

// hex 编码
func HexEncode(original string) (encoded string) {
	encoded = hex.EncodeToString([]byte(original))
	return encoded
}

// hex 解码
func HexDecode(original string) (decoded string, err error) {
	bytes, err := hex.DecodeString(original)
	return string(bytes), err
}

// md5 编码
func MD5Encode(original string) (encoded string) {
	// 创建一个新的 MD5 哈希对象
	hasher := md5.New()
	// 写入数据
	hasher.Write([]byte(original))
	// 计算哈希值
	hash := hasher.Sum(nil)
	// 将哈希值转换为十六进制字符串
	hashString := hex.EncodeToString(hash)
	return hashString
}

// sha1 编码
func Sha1Encode(original string) (encoded string) {
	// 创建一个新的 SHA-1 哈希对象
	hasher := sha1.New()
	// 写入数据
	hasher.Write([]byte(original))
	// 计算哈希值
	hash := hasher.Sum(nil)
	// 将哈希值转换为十六进制字符串
	hashString := hex.EncodeToString(hash)
	return hashString
}

// sha256 编码
func Sha256Encode(original string) (encoded string) {
	// 创建一个新的 SHA-256 哈希对象
	hasher := sha256.New()
	// 写入数据
	hasher.Write([]byte(original))
	// 计算哈希值
	hash := hasher.Sum(nil)
	// 将哈希值转换为十六进制字符串
	hashString := hex.EncodeToString(hash)
	return hashString
}

// sha512 编码
func Sha512Encode(original string) (encoded string) {
	// 创建一个新的 SHA-512 哈希对象
	hasher := sha512.New()
	// 写入数据
	hasher.Write([]byte(original))
	// 计算哈希值
	hash := hasher.Sum(nil)
	// 将哈希值转换为十六进制字符串
	hashString := hex.EncodeToString(hash)
	return hashString
}



func main(){

    str := "123456+abc"
	fmt.Println("原始值:", str)

	// url编码
	urlEncode := UrlEncode(str)
	fmt.Println("url编码:", urlEncode)
	// url解码
	urlDencode, _ := UrlDencode(urlEncode)
	fmt.Println("url解码:", urlDencode)

	// base64编码
	base64Encode := Base64Encode(str)
	fmt.Println("base64编码:", base64Encode)
	// base64解码
	base64Dencoded, _ := Base64Decode(base64Encode)
	fmt.Println("base64解码:", base64Dencoded)

	// hex编码
	hexEncode := HexEncode(str)
	fmt.Println("hex编码:", hexEncode)
	// hex解码
	hexDencode, _ := HexDecode(hexEncode)
	fmt.Println("hex解码:", hexDencode)

	// md5编码
	fmt.Println("md5编码:", MD5Encode(str))

	// sha-1编码
	fmt.Println("sha-1编码:", Sha1Encode(str))

	// sha-256编码
	fmt.Println("sha-256编码:", Sha256Encode(str))

	// sha-512编码
	fmt.Println("sha-512编码:", Sha512Encode(str))

}

输出结果:

原始值: 123456+abc

url编码: 123456%2Babc

url解码: 123456+abc

base64编码: MTIzNDU2K2FiYw==

base64解码: 123456+abc

hex编码: 3132333435362b616263

hex解码: 123456+abc

md5编码: 5e4f407d2a09d76203273bdf4be46815

sha-1编码: a2c6933ae32fbafb9ba9c824b0ae9aa9c86c9191

sha-256编码: b8f9ab210dd328fb4175af2e9dbbe1be36171367d06158ab180fe7d76bb8b1c8

sha-512编码: 9cd87122ad0e5784d51a4689373b03e9b01f0c7d0bff8160fdb1d8d18fd46f94027a56a444904d4b2179c8d3c447330f35126246804b96baff3fa433d658dfec


http://www.kler.cn/a/391784.html

相关文章:

  • Spring Cloud Contract快速入门Demo
  • 机器学习——贝叶斯
  • 【Hadoop实训】Hive 数据操作①
  • 服务号消息折叠折射出的腾讯傲慢:上云会不会也一样?
  • Camera Tuning中AE/AWB/AF基础知识介绍
  • Springboot整合Prometheus+grafana实现系统监控
  • 鸿蒙应用权限控制与位置服务(Location Kit)
  • LeetCode【0016】最接近的三数之和
  • EasyExcel级联下拉
  • 压缩感知:高效信号采样与重建的理论与实践
  • Paddle分布式训练报NCCL错
  • Windows 局域网IP扫描工具:IPScaner 轻量免安装
  • [产品管理-70]:四种不同的创新战略框架的比较:皮萨诺创新景观图、波特竞争战略、安索夫矩阵、马尔斯和斯诺战略框架
  • 使用Python Flask构建Web应用
  • 思考:linux Vi Vim 编辑器的简明原理,与快速用法之《 7 字真言 》@ “鱼爱返 说 温泉啊“ (**)
  • <el-select> :remote-method用法
  • djang5 官网_polls_app_03( 关于Views)
  • SpringBoot单体服务无感更新启动,动态检测端口号并动态更新
  • Python学习从0到1 day26 第三阶段 Spark ② 数据计算Ⅰ
  • element-plus menu菜单点击一级导航不选中二级导航的问题
  • C语言之用getopt解析命令行参数
  • java:使用Multi-Release Jar改造Java 1.7项目增加module-info.class以全面合规Java 9模块化规范
  • Unet++改进24:添加DualConv||轻量级深度神经网络的双卷积核
  • 无人机飞手考证,地面站培训技术详解
  • uniCloud云对象调用第三方接口,根据IP获取用户归属地的免费API接口,亲测可用
  • PNG图片批量压缩exe工具+功能纯净+不改变原始尺寸