【问题标题】:perl base64 encode with url safe charactersperl base64 使用 url 安全字符进行编码
【发布时间】:2020-03-17 05:35:21
【问题描述】:

在 perl 脚本中,我使用 base64 对字符串进行编码,但我希望输出是 URL 安全的 Base64 包括在 URL 中转换的 / 或 + 等字符

我怎样才能避免这种情况?

【问题讨论】:

  • 好的 base32 工作正常

标签: perl base64


【解决方案1】:

你很幸运,“GAAS”已经为你完成了。该模块名为MIME::Base64,如果您在 POD 页面下方看到大约一半,则该模块包含两个功能;

encode_base64url( $bytes )

decode_base64url( $str )

which “根据“URL 应用程序”的 base64 方案进行编码和解码。这是 base64 编码的变体,不使用填充,不将字符串分成多行并使用字符“- " 和 "_" 而不是 "+" 和 "/" 以避免使用保留的 URL 字符。"

默认情况下不会导出这些函数 - 这意味着您需要在使用模块时请求它们。例如:

use MIME::Base64 qw(encode_base64url decode_base64url);
my $str = "Hello World";
my $b64_url = encode_base64url($str);
print $b64_url, "\n";
print "Original string: ", decode_base64url($b64_url);
exit 0;

【讨论】:

  • MIME::Base64::URLSafe;有这些功能。不是 MIME::Base64
  • @Ram 不,在 MIME::Base64::URLSafe 中它们被称为 urlsafe_b64encode 和 urlsafe_b64decode。 encode_base64url 和 decode_base64url 在 MIME::Base64 中;看看你怀疑的来源。
  • @Ram 顺便说一下,它们已在 v3.11(2010 年 11 月发布)中添加到 MIME::Base64,以防万一您运行的是旧版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 2017-07-08
  • 2021-12-04
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多