2017-06-21 63 views
-1

我正在使用this javascript程序來嘗試編碼/解碼一些字符串。如何使用國際字母/特殊字符進行Base32加密?

這對於一些字符串工作正常,但像這樣的電子郵件,我得到無效的結果:

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

輸出:

9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqp 

輸入:

base32.decode(9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqpu"); 

結果:

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

正如你所看到的,它在解碼時不會產生原始字符串。不知道爲什麼。

回答

0

юзер@екзампл.ком.example.com
它是28個字符,不是全部ASCII(或一個字節utf-8)。

但是有些輸入字符是多字節utf-8字節。
它是42 utf-8字節。

Base32編碼它應該是兩個字符中的每個字節。

9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqp
爲76字符,在預期長度的明顯的錯誤。

預期的Base32編碼應該是84個字符。

這可能是因爲幾個輸入字符是多字節utf-8字節。

問題中似乎缺少某些東西。