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


    问题与成因

    中文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++据说能够转换编码,没有亲自尝试过。

  • 相关阅读:
    2013暑假集训B组训练赛第二场
    2013暑假集训B组训练赛第二场
    2013暑假集训B组训练赛第二场
    2013暑假集训B组训练赛第二场
    SPOJ ANARC05H 计数DP
    HDU 2586 LCA-Tarjan
    POJ 1330 LCA最近公共祖先 离线tarjan算法
    Codeforces 176B 经典DP
    UVA 10564 计数DP
    HDU 4901 多校4 经典计数DP
  • 原文地址:https://www.cnblogs.com/wyzersblog/p/13882302.html
Copyright © 2020-2023  润新知