Golang Base64编码解码
Golang Base64编码解码
Golang内置支持Base64编码解码,Go的encoding/base64
包遵照RFC 4648规范实现了base64编码解码功能,包括标准方式以及URL/文件名称安全方式编码。本文通过示例演示如何编码和解码。
1. Base64 标准方式编码解码
RFC 4648规范约定标准Base64对任何二进制数据使用US-ASCII字符子集进行编码,字符包括:A-Z, a-z, 0-9, +, and /
。
编码示例:
func encode() {data := "hello world12345!?$*&()'-@~"// Base64 Standard EncodingsEnc := base64.StdEncoding.EncodeToString([]byte(data))fmt.Println(sEnc) // aGVsbG8gd29ybGQxMjM0NSE/JComKCknLUB+
}
解码示例:
func decode() {data := "hello world12345!?$*&()'-@~"sEnc := base64.StdEncoding.EncodeToString([]byte(data))// Base64 Standard DecodingsDec, err := base64.StdEncoding.DecodeString(sEnc)if err != nil {fmt.Printf("Error decoding string: %s ", err.Error())return}fmt.Println(string(sDec)) //hello world12345!?$*&()'-@~
}
2. URL和文件名安全编码解码
URL和文件名安全方式是标准方式的变体,其输出用于URL和文件名。因为+
和/
字符是标准Base64字符对URL和文件名编码不安全,变体即使用-
代替+
,_
(下划线)代替/
。
编码示例:
func encode() {data := "hello world12345!?$*&()'-@~"// Base64 Url EncodinguEnc := base64.URLEncoding.EncodeToString([]byte(data))fmt.Println(uEnc) // aGVsbG8gd29ybGQxMjM0NSE_JComKCknLUB-
}
解码示例:
func decode() {data := "hello world12345!?$*&()'-@~"uEnc := base64.URLEncoding.EncodeToString([]byte(data))// Base64 Url DecodinguDec, err := base64.URLEncoding.DecodeString(uEnc)if err != nil {fmt.Printf("Error decoding string: %s ", err.Error())return}fmt.Println(string(uDec)) // "hello world12345!?$*&()'-@~"
}
3. 无填充编码
标准Base64编码对输出结果使用=
进行填充。一般也建议使用填充方式,但一些场景无需填充。我们可以使用Raw方式编码即没有填充。
无填充编码示例:
func main() {data := "abc!?$*&()'-@~"// Base64 Encoding without PaddingswEnc := base64.RawStdEncoding.EncodeToString([]byte(data))fmt.Println(swEnc) // YWJjIT8kKiYoKSctQH4// Base64 Url Encoding without PaddinguwEnc := base64.RawURLEncoding.EncodeToString([]byte(data))fmt.Println(uwEnc) //YWJjIT8kKiYoKSctQH4
}
4. 总结
本文介绍了Golang内置支持Base64编码解码,确实很简单、很方便。
Golang Base64编码解码相关推荐
- js base64 编码解码
js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...
- python使用base64编码解码数据
python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...
- java svgbase64转byte_java 图片进行base64 编码解码
java 图片进行base64 编码解码 刘振兴 代码分享 2017年06月07日 10555 2条评论 import sun.misc.BASE64Decoder; import sun.misc. ...
- openssl算法 —— 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
openssl 加密字符串的方法: 一.利用openssl命令进行BASE64编码解码(base64 encode/decode): 1. BASE64编码命令 对字符串'abc'进行base64编码 ...
- Java工程中引用Base64编码解码小记
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一. Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两 ...
- Java Base64 编码解码方案总结
转载自 Java Base64 编码解码方案总结 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应 ...
- 一些Base64编码/解码及数据压缩/解压方面的知识
一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...
- Javascript中Base64编码解码的使用实例
Javascript为我们提供了一个简单的方法来实现字符串的Base64编码和解码,分别是window.btoa()函数和window.atob()函数. 1 var encodedStr = win ...
- 原来浏览器原生支持JS Base64编码解码
原来浏览器原生支持JS Base64编码解码 转载来源:https://www.zhangxinxu.com/wordpress/2018/08/js-base64-atob-btoa-encode- ...
最新文章
- Java 内部类及其原理
- crt证书linux使用,linux下使用openssl生成https的crt和key证书
- python映射类型-什么是python中唯一的映射类型
- 为什么要使用 using namespace std
- JS排序算法之插入排序
- datatable和awk获取列名操作
- 测试人生 | 三十而已,何需惧怕 年薪40W+涨薪幅度超40%
- Python 字典(dict)操作(update)、翻转字典
- STM32F103 驱动DS18B20
- [速记] 网络安全复习——选择题汇总
- 多功能Win系统维护工具箱
- Excel作图-制作复合饼图
- 关于考研复习数学分析和高等代数
- 音频编码-G.711
- 华为模拟器eNSP练习题-静态路由、缺省路由
- 上古世纪美服服务器在哪个文件夹,美服《上古世纪》新的封闭测试将Leviathan更新带到中国服务器上...
- python期中考试试卷分析_期中考试试卷分析与反思
- fedora安装rar解压程序 unrar
- JavaSwing_2.6: JTextField(文本框)
- 脚本与脚本语言简单介绍
热门文章
- R语言——多元数据直观表示
- 步进电机定子相数:单相/两相/三相/四相/五相结构工作原理
- Error. An error occurred while processing your request.
- 微信小程序直播服务器是用的腾讯的,使用微信小程序和腾讯云实现直播功能
- 数值分析复化求积matlab,MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)...
- 全套BAT大厂面试题整理锦集
- 怎样买保险才不会被坑?用亲身经历告诉你!
- 读书笔记-财务报表分析的目的
- 包包的结构制图_原来可以用R这么画基因结构图
- 新闻发布系统——INSERT 语句与 FOREIGN KEY 约束XXX冲突。该冲突发生于数据库XXX,表XXX, column 'XXX。