AS3 zip加密解密算法二

来源:互联网 发布:淘宝新店如何经营规划 编辑:程序博客网 时间:2024/05/29 08:55

      上文提到Java的的zip加密/解密工作, 由于Flex端陷入僵持, 想想能在Java端实现zip加密/解密也不错. 为了保持和Flex的目录结构一致, 我将Java端的的zip加密/解密代码目录命名为nochump.util.zip.

    在JDK中已有zip的解压缩代码, 因此我只需要扩展现有的java.util.zip包下的代码, 并实现加密/解密算法的即可.

加密/解密核心代码如下:

 

  

Refer to:http://code.google.com/p/encrypt-zip-as3-java/source/browse/trunk/EncryptZip/src/nochump/util/extend/ZipCrypto.java

      你会注意到在AS3中出错的代码, 出现在Java中了

                   _Keys[1] = (_Keys[1] * 0x08088405) ;

不过Java经过计算后得到的_Keys[1]的值和计算器计算的结果完全相符. 经过测试和验证, 程序对zip文件加密/解密完全没有问题, 它能够正常的工作运行.

     此时, Java端的zip文件加密/解密解决了 (这出乎我的意料之外, 原以为Flex端能优先完成).  我要完成EncryptZip的开发, 就必须实现AS3中的zip文件加密/解密功能, 可上文(AS zip加密解密算法一) 中的"两个大数相乘值不正确"的问题, 我仍然没有思路.

    穷则变, 变则通. 我开始上网查找其它语言实现zip文件加密/解密的算法. 柳暗花明了, 我找到开源的C#语言实现的zip文件加密/解密算法, 提取C#的实现算法后, 测试C#的zip文件加密/解密代码对key的更新过程, 并将_Keys[1], _Keys[2], _Keys[3]值的变化打印到表格里, 分析比较后发现它对key 的操作的值取的是uint类型的数据. 这相当值得借鉴. 只要AS3端的代码按C#的算法方式进行运算, 这不就得到了想要的功能么?(未完, 请阅读AS zip加密解密算法三)

 

(转贴请注明出处)

 

Author:David

    Mail:xiang.okay@gmail.com