AS3 zip加密解密算法三

本文介绍了一个使用AS3实现ZIP文件加密和解密的算法,通过CRC32计算解决大数相乘问题,确保与C#端保持一致。算法包括更新密钥、加密和解密消息的方法,并利用BigInteger进行大数运算。

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

  在AS3.0中解决"两个大数相乘值不正确"的问题, 参考的C#的zip加密/解密算法. 在实际的测试开发过程中, 我知道需要采用了十六进制相乘的算法, 并对得到的十六进制的数据从低位截取八位, 将这八位十六进制值加一后赋给 _Keys[1]. 这样计算后得到的key的值完全和C#的key值一致了.

   代码如下:

    

   

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

  上述代码用到了_Keys[1] = CRC32.calcUnit32(_Keys[1])+ 1; CRC32.calcUnit32就是用来解决在"AS zip加密解密算法一"中遇到的并导致Encrypt的Flex端开发停止的问题.

   代码如下:

    

    Refer to: http://code.google.com/p/encrypt-zip-as3-java/source/browse/trunk/EncryptZip/flex_src/nochump/util/zip/CRC32.as

 

   到此AS3.0代码就基本上就实现zip加密/解密的功能. 这样Encrypt能够在Flex和Java两端传输zip加密后的数据, 并对其解密.

 

总结:

  1AS3的大数相乘结果不正确,采用BigInteger十六进制方式相乘,并取其后八位。

   2、AS3和C#类似,byte是无符号的, Javabyte是有符号的。

   3、增加12位数据,最后一位是(dostime>>8)& 0xff,用来验证密码的正确性

 

   

(转贴请注明出处)

 

Author:David

    Mail:xiang.okay@gmail.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值