如何使用国际字母/特殊字符进行Base32加密?

时间:2017-06-21 14:47:49

标签: javascript encoding decoding base32

我正在使用this javascript程序尝试对某些字符串进行编码/解码。

这适用于某些字符串,但对于这些电子邮件,我得到的结果无效:

base32.encode("юзер@екзампл.ком.example.com");

输出:

9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqp

输入:

base32.decode(9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqpu");

结果:

"N7ªµÏ\Õ@@5;ªµÏ\×3Uk¹¼?;.;Uk¹¾<.example.com"

正如您所看到的,它在解码时不会产生原始字符串。不知道为什么。

1 个答案:

答案 0 :(得分:0)

юзер@екзампл.ком.example.com
它是28个字符,不是所有ASCII(或一个字节utf-8)。

但是有几个输入字符是多字节的utf-8字节 它是42 utf-8字节。

Base32编码它应该是每个字节的两个字符。

9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqp
是76个字符,预期长度有明显错误。

预期的Base32编码应为84个字符。

这可能是因为几个输入字符是多字节utf-8字节。

问题中似乎缺少一些东西。