python base64 的方法
在Python中,base64
模块提供了一系列用于编码和解码Base64的函数。下面是一些常用的方法:
base64.b64encode(s)
: 对字符串s
进行Base64编码。这里的s
应该是字节类型,如果你有一个字符串类型的数据,需要先用.encode()
方法将其转换为字节类型。base64.b64decode(s)
: 对Base64编码的字符串s
进行解码。返回的也是字节类型的数据。base64.urlsafe_b64encode(s)
: 和b64encode
类似,但是生成的Base64编码会将+
和/
分别替换为-
和_
,使得编码后的结果可以在URL中安全地使用。base64.urlsafe_b64decode(s)
: 对用urlsafe_b64encode
方法编码的字符串进行解码。
下面是一个简单的例子,展示如何使用这些方法:
1 | import base64 |
请注意,Base64编码不是加密方法,它仅仅是一种编码方式,可以很容易地被解码。不应该用来保护敏感信息。
为什么 shell 中的 echo ‘abc’ | base64 和 python 中的不一样?如何一样
在Shell中使用echo
命令时,默认情况下,echo
会在输出的末尾添加一个换行符(\n
)。这个换行符也会被base64
编码。而在Python中,如果你直接对字符串'abc'
进行编码,你不会在字符串末尾添加换行符。
为了在Shell中得到与Python中相同的结果,你需要使用echo
命令的-n
选项,这样它就不会在字符串末尾添加换行符了。
Shell命令(不添加换行符):
1 | echo -n 'abc' | base64 |
对应的Python代码(不添加换行符):
1 | import base64 |
两者现在应该给出相同的Base64编码结果。
如果你想在Python中得到包含换行符的版本,你可以这样做:
1 | import base64 |
这将模拟Shell中不带-n
选项的echo
命令的行为。