【问题标题】:possible characters base64 url safe function可能的字符 base64 url​​ 安全功能
【发布时间】:2011-05-23 19:39:37
【问题描述】:

从这个字符串返回的可能字符范围是多少?

function base64url_encode($data) 
{ 
  return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); 
} 

我的猜测是[a-z0-9-_]

【问题讨论】:

  • base64 区分大小写。所以应该是 a-zA-Z0-9-_

标签: php base64


【解决方案1】:

Base64 编码的字符串可能包含字符 a-z A-Z 0-9 + / =

您将删除右侧填充 = 并将 + 替换为 -/ 替换为 _

所以在你的情况下,可能的字符是a-z A-Z 0-9 - _

More Info

【讨论】:

    【解决方案2】:

    可能返回的字符范围是:

    • A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
    • a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
    • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    • -减号)和_下划线

    在您的正则表达式样式中,应该是 [a-zA-Z0-9_-]

    【讨论】:

    • 抱歉恢复旧帖子.. 但值得一提的是,base64encode 喜欢将= 添加到某个字符串的末尾作为“填充”,以保持字符串长度为模 4 数。查看答案:stackoverflow.com/a/4492448/648350
    • @haxxxton 和那些= 在问题的base64url_encode 函数中被明确地rtrim-ed。
    • @salathe 同意,我只是认为值得一提的是 base64encode 的默认行为是什么,因为当我搜索它的可能值时,这是第一批发布的帖子之一向上:)
    • 还有一个 '=' 等号,就像这个字符串 "RElMR19OZXdzX0NlbnRyYWxfMjAxMTExMThfZGE2NTU0NjI0Zi5qcGc=.jpg"
    • @FrederickG.Sandalo 检查原始问题,等号 (=) 正在被 (r) 修剪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2014-03-21
    • 2019-03-22
    • 1970-01-01
    相关资源
    最近更新 更多