烂泥:base64加密与解密

本文由ilanniweb微信公众号提供友情赞助,首发于烂泥行天下

jenkins技术分享QQ群:571981257

什么是base64

base64是网络上最常见的用于传输8Bit字节码的编码方式之一,base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个base64单元,即3个字节可由4个可打印字符来表示。它可用来作为电子邮件的传输编码。

在base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后BinHex的版本使用不同的64字符集来代表6个二进制数字,但是不被称为base64。

base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括MIME的电子邮件及XML的一些复杂数据。

以上选自百度百科。

加密与解密字符串

我们先来介绍,通过base64对字符串进行简单的加密和解密。

2.1 加密字符串

现在我们要把12345678这个字符串进行加密,使用如下命令:

echo -n “12345678” | base64

wps16

注意加密后的字符串是MTIzNDU2Nzg=

2.2 解密字符串

加密结束后,我们再来通过base64命令进行解密,命令如下:

echo “MTIzNDU2Nzg=” | base64 –d

wps17

通过上图,我们可以很明显的看出解密后的内容,与前面我们加密的内容一样,说明解密成功。

加密与解密文件

上述章节介绍了,base64对字符串加解密后,我们再来看看base64对文件的加解密。

3.1 加密文件

在此我们以ssh的私钥文件为例,通过base64进行加密。ssh私钥内容如下:

cat deploysshkey

wps18

现在开始对ssh私钥进行加密,命令如下:

base64 deploysshkey >1.txt

cat 1.txt

wps19

文件1.txt是保存的加密后的内容,文件deploysshkey是原始文件。

3.2 解密文件

base64加密完毕后,我们再来对加密的文件进行解密,使用命令如下:

base64 -d 1.txt > 2.txt

cat 2.txt

wps20

文件2.txt是保存的解密后的内容。

现在我们再来对比文件2.txt和deploysshkey内容是否一致,如下:

wps21

通过上图,我们可以很明显的看出加密和解密后文件的内容是一模一样的。

实际应用

上述第二、三章节,我们介绍了base64的加密和解密的简单使用,那么我们再来介绍下base64的加解密,在实际工作中的使用。

4.1 加密ldap的cn字段

在进行ldap备份时,我们使用slapcat命令进行备份,如果cn部分是中文的话,在备份后的文件中,cn显示的是一个字符串,如下:

wps22

注意上图中cn字段的值54OC5rOl,这个值是经过base64加密过得。

我们来看下ldapadmin中cn字段显示的真是内容,如下:

wps23

我们可以通过base64进行解密,查看cn其加密内容如下:

echo “54OC5rOl” | base64 -d

wps24

通过上图,我们可以很明显的看出base64解密后的内容和加密前的内容是一致的。

4.2 k8s的secrets中字段加密

在k8s的secrets中,如果我们需要对一些特殊字段或者文件进行加密的话,那么我们就必须先使用base64进行加密。

在此先以k8s中mysql的root用户密码为例,进行讲解。

首先我们先来设置下mysql root用户密码为123456,然后通过base64进行加密,如下:

echo -n “123456” | base64

wps25

然后,我们就可以使用base64加密后的密文,在k8s的secrets中进行使用,如下:

– apiVersion: v1

  kind: Secret

  metadata:

    name: mysql-secret

    namespace: k8s-dev1

  type: Opaque

  data:

  #该密码是经过base64加密过的,原始密码为123456

    mysql-root-password: MTIzNDU2

    mysql-password: MTIzNDU2

wps26

在后续的deploy或者StatefulSet中,我们就可以直接进行使用。在此以StatefulSet为例,使用上述Secret,如下:

env:

– name: MYSQL_ROOT_PASSWORD

  valueFrom:

    secretKeyRef:

      name: mysql-secret

      key: mysql-root-password

wps27

4.3 k8s的secrets中文件加密

在4.2章节中,我们介绍了base64对mysql的root密码加密后,密文在k8s中secrets的使用。

现在我们再来介绍ssh密钥在k8s中secrets的使用,首先对ssh密钥进行加密,如下:

wps28

然后把上述加密后的字段复制到Secret中,如下:

wps29

在Deployment中,使用上述Secret,如下:

wps30

因为k8s的deploy yml文件中包含的内容比较多,在此就只截图了部分内容,其他相关内容就不一一贴出来了。

如果想要查看相关内容的话,可以通过这两个附件得到:《mysql_base64_点我下载》和《ssh_base64_点我下载

以上我们使用的是base64命令进行了base64的加解密,我们也可以通过一些网站提供的工具进行base64的加解密,比如:

http://tool.oschina.net/encrypt?type=3

wps31

wps32

到此有关base64的使用,我们就介绍完毕。当然在实际的工作中,还有其他地方使用到,在此我们就不进行一一介绍。

未经允许不得转载:烂泥行天下 » 烂泥:base64加密与解密

赞 (5) 打赏

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

支付宝扫一扫打赏

微信扫一扫打赏

广州桑sang拿