AS3 zip加密解密算法二

本文介绍了如何在Java中实现ZIP文件的加密和解密,通过扩展java.util.zip包并实现加密解密算法。核心代码包括Key的更新和加密解密过程。问题在于AS3中的大数相乘错误,但Java实现已成功解决该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      上文提到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值