shell - 如何使用unix命令对base64和base64URL中的数据进行编码和解码?

标签 shell encoding base64 decoding base64url

Base64 编码可以通过

$ echo Some_data_to_be_converted | base64

U29tZV9kYXRhX3RvX2JlIF9jb252ZXJ0ZWQK

Base64解码可以通过
$ echo U29tZV9kYXRhX3RvX2JlIF9jb252ZXJ0ZWQK | base64 -d

Some_data_to_be_converted
  • 如何实现 Base64URL 编码/解码?
  • 将“+”替换为“-”并将“/”替换为“_”就足够了吗?
  • 什么时候填充“#”(添加/删除“#”要考虑)?
  • 最佳答案

    这与@jps 的建议相同,但更短。还记得echo默认情况下总是在末尾添加换行符,所以当你想对它进行编码时,你必须添加 -n .

    echo -n "Some_data_to_be_converted" | base64 | tr '/+' '_-' | tr -d '='
    

    用内置的 bash 工具解码它更复杂,因为我没有找到一种简单的方法来用“=”填充字符串,以便长度可以被 4 整除。可能可以用 awk 来完成。但我挖得不够深。如果你有本地 ruby ,它变得微不足道:
    2.6.2 > require 'base64'
    2.6.2 > Base64.urlsafe_encode64('test', padding: false)
     => "dGVzdA"
    2.6.2 > Base64.urlsafe_decode64('dGVzdA')
     => "test"
    

    关于shell - 如何使用unix命令对base64和base64URL中的数据进行编码和解码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58957358/

    相关文章:

    python - 如何在 Python 2.7 中使用 UTF-8?

    javascript - 如何获取存储在javascript文件输入中的文件字典?

    url - boost base64 url​​ 编码/解码

    将字节数据转换为十六进制字符串的 Linux 脚本

    linux - 交互式和非交互式 shell 中的环境变量

    c++ - 字符编码困惑!

    javascript - JS 编码 HTML 标签不起作用

    python - 使用 Python Base64 压缩 GAE Blob 图像?

    linux - 翻转 shell 脚本

    bash - 我想使用并行 ssh 在多个服务器上运行 bash 脚本,但它简单地打印 echo 语句