gxm11
gxm11
参见:https://libzip.org/documentation/zip_fopen_encrypted.html 的 CAVEATS 一节。zip包里的每个文件都是单独加密的,尽管我们通常都会使用同一个密码。实际使用中,zip提供“设置默认密码”的功能,并在打开文件时使用默认密码。而zip格式很难去校验密码是否正确,除非读一下文件(但是也无法区分是密码错误还是文件损坏)。`RGM::Ext.external_check`只是设置了一个zip包的路径和默认密码,设置密码本来就不会失败。 替代方案:如果密码错误,`RGM::Ext.external_load`会返回nil,用户可以自己加一个校验正确性的文件?实际操作中,这个密码几乎没有设置错误的可能。 @Krimiston
external_check 目前唯一的使用地点在finder.rb中,而且只对图片文件生效。设计的目的,是让用户可以很方便的打包Graphics文件夹。Finder在拿到图片的路径后,会调用external_check快速检查一下zip包中是否存在此图片,来决定RGM后续加载此图片文件的方式。 用户能接触到的只有Finder#regist。在这种场合下,用户如果输入了错误的密码,连标题画面都加载不出来。由于用户只进行过打包zip + 设置密码的操作,那显然只能是用户把密码写错了。 我没有考虑到用户使用external_load方法去读取zip包里的场景,这个需要重新规划一下。要让exteral_load抛出zip对应的全部的异常可能要改的地方还比较多。
开发中……[newcore.zip](https://github.com/gxm11/RGModern/files/13317874/newcore.zip)
这倒没什么难度,不过我想优先发布1.1.0,我考虑一下