base64编码的字符串是否唯一?

用户名

我找不到答案。如果我使用Base64编码字符串,则基于该字符串的编码输出是否唯一?我问是因为我想创建一个包含用户信息的令牌,所以我需要确保输出根据信息是唯一的。

例如,如果我对“ UnqUserId:987654321 Timestamp:01/02/03”进行编码,那么这将是唯一的,因此无论我将其放置在哪个其他用户ID中,都不会发生冲突?

西诺

迟了两年,但是我们开始:

简短的答案是,唯一的二进制/十六进制值将始终编码为唯一的base64编码的字符串。

但是,多个base64编码的字符串可以表示单个二进制/十六进制值。

这是因为十六进制字节未与base64“数字”对齐。一个十六进制字节用8位表示,而单个base64数字用6位表示。因此,任何未进行6位对齐的十六进制值都可以具有多个base64表示形式(尽管正确实现的base64编码器编码为相同的base64表示形式)。

这种未对齐的示例是十六进制值“ 0x433356c1”。该值由32位表示,base64编码为“ QzNWwQ ==”。但是,此32位值不是6位对齐的。那会发生什么呢?在这种情况下,base64编码器将四个零位填充到二进制表示的末尾,以使序列为36位,从而使6位对齐。

解码时,base64解码器现在必须解码为8位对齐值。它会截断填充的位,并将前32位解码为十六进制值。例如,“ QzNWwc ==”和“ QzNWwQ ==”是不同的base64编码的字符串,但解码为相同的十六进制值0x433356c1。如果仔细看,我们注意到这两个编码字符串的前32位相同:

'QzNWwc==':
010000 110011 001101 010110 110000 011100

'QzNWwQ==':
010000 110011 001101 010110 110000 010000

唯一的区别是最后四位被忽略。请记住,除了添加的填充字节应始终为零之外,任何base64编码器均不得生成“ QzNWwc ==”或0x433356c1以外的任何其他base64值(“ QzNWwQ ==”除外)。

总而言之,可以肯定的是,使用正确实现的base64编码器,唯一的二进制/十六进制值将始终编码为唯一的base64表示形式。如果生成的base64字符串未将填充/对齐字节清零,则“冲突”仅在解码期间发生。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何判断字符串是否已“正确”编码为Base64?

来自分类Dev

有可能知道字符串是否在base64中编码?

来自分类Dev

有可能知道字符串是否在base64中编码?

来自分类Dev

在BASE64中编码每个字符串以存储在Mysql中是否很好?

来自分类Dev

检查字符串是否在PowerShell中编码为Base64

来自分类Dev

有可能知道字符串是否在base64中编码吗?

来自分类Dev

Android base64编码的字符串无效?

来自分类Dev

Base64编码的字符串不匹配

来自分类Dev

Base64编码的位图返回冗长的字符串

来自分类Dev

在MSBuild中将字符串编码为Base64

来自分类Dev

特定字符串中的 Base64 编码差异

来自分类Dev

Base64 字符串编码 C# 与 TSQL

来自分类Dev

SHA256 字符串的 Base64 编码

来自分类Dev

Apache Velocity宏产生一个Base64编码的字符串

来自分类Dev

检查字符串是否为base64

来自分类Dev

直接在href属性中将编码为Base64编码的字符串的文件下载

来自分类Dev

直接在href属性中将编码为Base64编码的字符串的文件下载

来自分类Dev

将字节字符串转换为base64编码的字符串(输出不是字节字符串)

来自分类Dev

无法使用iOS base64库解码由php编码的一些utf-8字符串base64?

来自分类Dev

base64编码字节v b64编码v编码字符串

来自分类Dev

base64编码字节v b64编码v编码字符串

来自分类Dev

是否有任何库可以使用Java中的RFC 3548对base64编码/解码字符串进行编码

来自分类Dev

解码 Base64 字符串

来自分类Dev

Node.js中的base64 JSON编码的字符串

来自分类Dev

从Base64编码的字符串中检索MIME类型

来自分类Dev

在Python3中从base64编码的字符串中删除新行“ \ n”?

来自分类Dev

如何通过图像的Base64编码字符串识别文件类型

来自分类常见问题

如何在Swift中将字符串编码为Base64?

来自分类Dev

将Base64编码的图像作为字符串发送到Chromecast

Related 相关文章

  1. 1

    如何判断字符串是否已“正确”编码为Base64?

  2. 2

    有可能知道字符串是否在base64中编码?

  3. 3

    有可能知道字符串是否在base64中编码?

  4. 4

    在BASE64中编码每个字符串以存储在Mysql中是否很好?

  5. 5

    检查字符串是否在PowerShell中编码为Base64

  6. 6

    有可能知道字符串是否在base64中编码吗?

  7. 7

    Android base64编码的字符串无效?

  8. 8

    Base64编码的字符串不匹配

  9. 9

    Base64编码的位图返回冗长的字符串

  10. 10

    在MSBuild中将字符串编码为Base64

  11. 11

    特定字符串中的 Base64 编码差异

  12. 12

    Base64 字符串编码 C# 与 TSQL

  13. 13

    SHA256 字符串的 Base64 编码

  14. 14

    Apache Velocity宏产生一个Base64编码的字符串

  15. 15

    检查字符串是否为base64

  16. 16

    直接在href属性中将编码为Base64编码的字符串的文件下载

  17. 17

    直接在href属性中将编码为Base64编码的字符串的文件下载

  18. 18

    将字节字符串转换为base64编码的字符串(输出不是字节字符串)

  19. 19

    无法使用iOS base64库解码由php编码的一些utf-8字符串base64?

  20. 20

    base64编码字节v b64编码v编码字符串

  21. 21

    base64编码字节v b64编码v编码字符串

  22. 22

    是否有任何库可以使用Java中的RFC 3548对base64编码/解码字符串进行编码

  23. 23

    解码 Base64 字符串

  24. 24

    Node.js中的base64 JSON编码的字符串

  25. 25

    从Base64编码的字符串中检索MIME类型

  26. 26

    在Python3中从base64编码的字符串中删除新行“ \ n”?

  27. 27

    如何通过图像的Base64编码字符串识别文件类型

  28. 28

    如何在Swift中将字符串编码为Base64?

  29. 29

    将Base64编码的图像作为字符串发送到Chromecast

热门标签

归档