【问题标题】:php simple encode decode function using only (0-9 A-Z a-z)php简单编码解码功能仅使用(0-9 A-Z a-z)
【发布时间】:2017-05-26 09:50:53
【问题描述】:

我正在设置一个 PHP 电子邮件跟踪系统,该系统使用 url 参数来跟踪链接点击率。比如:

www.example.com?trackToken=10

我正在寻找一个简单的 PHP 编码/解码函数,我可以使用它来接收一个数字(在本例中为 10)并严格转换为数字和字母。类似:

www.example.com?trackToken=7aj8nG93nDpw9M9Nk1

我发现了几种使用 mcrypt 的加密/解密函数的变体。然而,加密的输出总是包含奇怪的字符。这些奇怪的字符使我的电子邮件很难发送/传递。

有谁知道只输出数字 0-9 和字母 a-z 或 A-Z 的良好加密函数?此外,我正在寻找一个解密函数来补充加密函数,以便我可以实际使用它。

我不是在这里寻找超级安全的东西。只是一种掩盖实际跟踪令牌的方法,因此用户无法自行更改它。

【问题讨论】:

  • 看看base64。它使用了另外两个字符,但这对于电子邮件来说应该不是问题。也许将它与您喜欢的任何加密相结合。
  • 你不应该需要2路加密,只需将(随机)令牌存储在数据库中
  • @rtfm 是的,这可能是最明智的做法。删除我的评论。
  • @rtfm:除非数据库已经填充。可能还有更多工作。

标签: php encryption


【解决方案1】:

Base64 在任何现代系统中都应该没问题 - 并且任何用 PHP 处理电子邮件的系统都符合“现代”的定义。我绝对没有理由想到仅限于字母数字。唯一的问题是,作为 URL 参数,您不想在字符串中包含“+”或“/”。有 base64url 可以解决这个问题,但它没有标准的 PHP 函数。您可以通过使用 base64_encode() 和 str_replace() 轻松复制它并解码 str_replace 后跟 base64_decode():

$coded = str_replace('+','-',str_replace('/','_',base64_encode($original)));

$original = base64_decode(str_replace('_','/',str_replace('-','+',$coded)));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多