专栏首页Golang语言社区Go语言-base64使用

Go语言-base64使用

什么是base64?

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

应用:个人知道的有web 把图片加密,直接同网页一起传送,秘钥签名后,也要使用它来加密,个人觉得,就是吧那些不直观看不见的数据装换看得见的字符串。

下面我们看看在golang中是如何实现的?:

package main

import (

        "encoding/base64"

        "fmt"

)

const (

        base64Table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

)

var coder = base64.NewEncoding(base64Table)



func base64Encode(src []byte) []byte {

        return []byte(coder.EncodeToString(src))

}



func base64Decode(src []byte) ([]byte, error) {

        return coder.DecodeString(string(src))

}

func main(){

        st:=base64Encode([]byte("你好吗?小子,干嘛不来一起编程了?o"))

        fmt.Print(string(st),"\n")

        stde,_:=base64Decode(st)

        fmt.Println(string(stde))

}

  输出效果:



5L2g5aW95ZCX77yf5bCP5a2Q77yM5bmy5Zib5LiN5p2l5LiA6LW357yW56iL5LqG77yfbw==



你好吗?小子,干嘛不来一起编程了?o

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Go-List

    要点 Element表示链表的一个元素,List表示链表 访问元素的值: .Value list是双向链表,可以在指定的位置插入元素 初始化: New()。——...

    李海彬
  • Java调用Golang生成的动态库(dll,so)

    如果提示命令未找到,那么说明你的计算机中还没有gcc,去安装一个吧,gcc官方网站:https://gcc.gnu.org/ 如果从来没有安装过gcc的朋友可以...

    李海彬
  • Go-List

    要点 Element表示链表的一个元素,List表示链表 访问元素的值: .Value list是双向链表,可以在指定的位置插入元素 初始化: New()。——...

    李海彬
  • ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面

    DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容。我们知道,如果直接请求的就是这个默认文件,那么前面介绍的Stat...

    蒋金楠
  • [ASP.NET Core 3框架揭秘]服务承载系统[4]:总体设计[下篇]

    在了解了作为服务宿主的IHost接口之后,我们接着来认识一下作为宿主构建者的IHostBuilder接口。如下面的代码片段所示,IHostBuilder接口的核...

    蒋金楠
  • .NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)

      关于数据一致性的文章,园子里已经有很多了,如果你还不了解,那么可以通过以下的几篇文章去快速地了解了解,有个感性认识即可。

    Edison Zhou
  • Android 禁止Viewpager左右滑动功能

    首先自定义一个 继承自 ViewPager的自定义 类 package com.yourcompany; import android.content.Con...

    庞小明
  • C#自定义事件:属性改变引发事件示例

    1 using System; 2 using System.Collections.Generic; 3 using System.Linq; ...

    CNXY
  • Google Protocol Buffers 数据交换协议

    protobuf(Protocol Buffers)是Google推出的一个结构化数据交换协议,用于传递自定义的消息格式,可用于同一台机器的进程间、不同设备进程...

    Yano_nankai
  • 【“别跟我不会”系列】Java设计模式之策略模式

    一直以来,笔主想写关于设计模式的系列文章与大家进行交流,但碍于自己经验上尚浅,无法将此讲解透彻,闹了笑话。但千里之行,始于足下,我决定将我自己的工作中我用到的设...

    23号杂货铺

扫码关注云+社区

领取腾讯云代金券