压缩包使用中文密码带来的问题

问题与成因

中文windows系统的中文编码多会使用GBK,而不是UTF-8。因此设置压缩密码时,密码很可能采用了GBK编码。在只使用UTF-8编码的操作系统(比如英文windows,linux等)上,即使输入了同样的中文内容也会提示密码错误。

据个例子,四个汉字“中文密码”编码为GBK后的16进制表示:
0xD6D0 0xCEC4 0xC3DC 0xC2EB
编码为UTF-8后的16进制表示:
0x4E2D 0x6587 0x5BC6 0x7801;

内容不相同。因此提示了密码错误。

解决方案

假设我们使用的OS是UTF-8的,那么就尝试将中文密码编码到GBK(可能乱码,但不影响使用)。

linux iconv

在linux机器上可以这样解决

echo -n "中文密码" | iconv -f utf-8 -t gbk >gbk_code.txt

执行后,在UTF-8系统系查看gbk_code.txt:

没错,就是乱码的。只要直接复制乱码,粘贴进密码框就能解密。

Python

在windows上可以安装python3,然后这样解决:

s="中文密码"
with open('gbk_code.txt', 'wb') as f:
    f.write(s.encode('gbk'))

直接复制乱码,粘贴进密码框就能解密。

Notepad++

Notepad++据说能够转换编码,没有亲自尝试过。

posted @ 2020-10-27 00:26  DDKK64  阅读(7766)  评论(0编辑  收藏  举报