python - 可以从base64字符串中删除等号吗?

标签 python base64 md5

我有一个字符串,我将其编码为 base64 以节省空间。如果我删除最后的等号,这有什么大不了的吗?这会显着降低熵吗?如何确保生成的字符串的长度是固定的?

>>> base64.b64encode(combined.digest(), altchars="AB")
'PeFC3irNFx8fuzwjAzAfEAup9cz6xujsf2gAIH2GdUM='

谢谢。

最佳答案

您需要编码为 Base64 的每 3 个字节转换为 4 个 ASCII 字符,并使用“=”字符填充结果,以便始终有 4 个编码字符的倍数。如果您有 3 个字节的精确倍数,那么您将不会得到等号。 一个备用字节意味着您在最后得到两个“=”字符。 两个备用字节意味着你在最后得到一个“=”字符。 根据您对字符串的解码方式,它可能会将其视为有效字符串,也可能不会。使用您拥有的示例字符串,它不会解码,但我尝试过的一些简单字符串可以解码。

您可以阅读此页面以更好地了解 base64 字符串和编码/解码。

http://www.nczonline.net/blog/2009/12/08/computer-science-in-javascript-base64-encoding/

有免费的在线编码器/解码器可用于检查输出字符串

关于python - 可以从base64字符串中删除等号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9020409/

相关文章:

php - Perl - SHA1 不匹配 PHP

python - 使用多个分隔符拆分字符串,并保留*一些*分隔符,但不是全部

image - 如何使用c#从base64获取扩展名

perl base64 使用 url 安全字符编码

java - 在 Java 中解码 Base64 字符串

Ant:重命名文件以包含其 MD5

android - MD5 是否保证可用于 Android 中的 MessageDigest?

python - 导入在 Docker 中无法与 Flask 一起使用(没有 gunicorn!)

python - 如何对过滤后的搜索查询进行排序/排序并将其呈现在 Django 上的另一个模板上?

python - 如何在 VS Code 中为 pylint 设置工作目录?