我看了一下回复,发现很多人没有理解我的意思,我重新整理一下描述。
标题应该改为:
”使用非 ascii 字符设置压缩包密码,在未来会不会解不开压缩包,提示解压缩密码不正确“
这个问题本质上是一个编码问题,要理解为什么是编码问题,需要知道解压缩时,
压缩软件是如何比对用户输入的密码的,如此就引出了用户设置的压缩包密码是以”什么形式“
存储在压缩包中的,既然存储了,那么就能读取,对于 7-zip 这类开源软件,是可以找到它的压
缩逻辑的,那么就可以知道密码在二进制文本的哪个位置。
那么问题来了,你都能读取了,我设置密码意义在哪,这里就引出了”信息摘要算法“,
也可以说是”hash 算法”,将文本“映射”为一串不可逆推出原始文本的一串字符,这样就保证了
密码的安全性,别人无法从压缩包中提取出你设置的压缩密码。
为什么说这是一个编码问题,这是由于 hash 算法在做 hash 运算的时候,会将你设置的密码文本
转化成二进制,然后再做 hash ,文本字符转二进制,这里就引出了编码问题。
ascii 字符集在我看来基本就那样了,不太可能会变动,但是 unicode 字符集就不太一样了,
就拿中文来讲,未来可能就会多一个字,多一个字就意味着 unicode 需要将他纳入,
新的码点就会产生,我之前担心的是新的码点的产生会不会更改以前码点的值,比如 U+4444 变成 U+4441,
加入使用 utf8 编码,对应的二进制值就会发生变化,从而影响 hash 值,导致无法解开压缩包,提示压缩
密码错误,这个纯属我胡思乱想。
还有一种顾虑是操作系统编码环境的改变对解开压缩包的影响,比如中国用户 windows 操作系统
很多的默认编码是 gbk (我的是,使用 [Console]::OutputEncoding 查看),对于一个中文字符,
utf8 使用三个字节,而 gbk 使用两个字节,这就导致同一个中文字符,二进制结果是不一样的,那么 hash
值也会不一样,这就意味着操作系统编码环境改变,如果压缩软件不统一对字符的编码,就会导致
在不同的系统中解不开压缩包。
@
fydpfg 这个老哥牛皮,他是真能从官方文档中找到答案