1

我已经看过很多关于如何检查 Base64 的 RegEx 答案,但我找不到专门用于表示 256 位数字的答案。

我是 Base64、字节转换和 RegEx 的新手。 这个答案似乎是检查 Base64 的最佳答案,但我无法从细节中判断它是否可以专门应用于 256 位数字的表示。

^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$

我需要确保这些字符串的有效性,因为我将它们用作 Ed25519 密钥的编码,并且我的en/decoder似乎接受非 ASCII 字符。

我真的不明白这是否可以专门应用于 256 位数字的表示。

RegEx 如何验证 Base64 编码的 256 位数字?

4

2 回答 2

5

正如 portforwardpodcast 指出的那样,一个 256 位的数字将被解码为 43 个字符,=最后一个作为填充符。

第43个字符所代表的数字只使用了前四位,所以它只能是一个代表最后两位为零的数字的字符。

您可以制作一个比任何 base64 字符串更简单的正则表达式来验证这一点,因为您确切知道它应该有多长:

^[A-Za-z0-9+/]{42}[AEIMQUYcgkosw048]=$
于 2014-01-16T01:10:56.290 回答
0

我会采取以下步骤:

  • 运行现有的 RegEx 以确定它是否是有效的 base64
  • 如果为真,则从 base64 解码并查看是否有 256 位或 32 字节。
    • 我相信这是一个 256 位数字:ampqampqampqampqampqampqampqampqampqampqamo= 所有 256 位数字在编码为 base64 时将具有相同的长度。这意味着它们都有 43 个字符,后跟一个 =,总共 44 个字符。您应该能够将其用作确定 base64 编码字符串表示 256 位的快捷方式。
于 2014-01-16T01:04:00.583 回答