加密算法和解密算法

加密算法和解密算法

ID:34571299

大小:61.20 KB

页数:11页

时间:2019-03-08

加密算法和解密算法_第1页
加密算法和解密算法_第2页
加密算法和解密算法_第3页
加密算法和解密算法_第4页
加密算法和解密算法_第5页
资源描述:

《加密算法和解密算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VB.NET写的TEA加密算法和解密算法(注:使用的是VB.NET2008)'//最近想了解一下QQ的协议,但第一就是解决TEA加密算法,在网上找了很久,'//发现有很多的版本的,当然也有VB的,但不是VB.NET的.那些VB的已经不能直接用了.'//而且现在VB.NET已经可以移位了.看了以前VB写的.为了移位就写了一个函数。'//只有C#或C++的两行的核心算法VB却要几十行。找遍了网上也没发现有VB.NET做只能靠自己了。'//TEA加密算我上面说过,其实就只有两行核心代码。但是QQ在使用这个算法的时候,'//由于需要加密不定

2、长的数据,所以使用了一些常规的填充办法和交织算法.所以更多是处理填充和交织。''//本人E-Mail:liwqbasic[AT]gamail.com([AT]换成@)QQ:&H12C214E9[0x12C214E9]''NamespaceHashTEAPublicClasshashteaPrivateConstdeltaAsUInteger=&H9E3779B9L'tea算法的delta值PrivatePlain(7)AsByte'指向当前的明文块PrivateprePlain(7)AsByte'指向前面一个明文块Privateou

3、t()AsBytePrivateCryptAsUIntegerPrivatepreCryptAsUInteger'当前加密的密文位置和上一次加密的密文块位置,他们相差8PrivatePosAsLong'当前处理的加密解密块的位置PrivatepaddingAsLong'填充数PrivateKey(15)AsByte'密钥PrivateHeaderAsBoolean'用于加密时,表示当前是否是第一个8字节块,因为加密算法'是反馈的,但是最开始的8个字节没有反馈可用,所有需要标明这种情况1PrivatecontextStartAsLon

4、gPublicFunctionUnHashTEA(ByValBinFromAsByte(),ByValBinTKeyAsByte(),_ByValoffsetAsInteger,ByValIs16RoundsAsBoolean)AsByte()Crypt=0preCrypt=0Key=BinTKeyDimcountAsInteger=0Dimm(offset+7)AsByteDimintlenAsInteger=BinFrom.LengthIfintlen<16Or(intlenMod8<>0)ThenThrowMsg("LenNo

5、Enuf")prePlain=Decipher(BinFrom,Key,True)Pos=prePlain(0)And&H7count=intlen-Pos-10Ifcount<0ThenThrowMsg("CountNoEnuf")Fori=offsetTom.Length-1m(i)=0NextReDimout(count-1)preCrypt=0Crypt=8contextStart=8Pos+=1padding=1Whilepadding<=2IfPos<8ThenPos+=12padding+=1EndIfIfPos=8T

6、henm=BinFromIfNot(Decrypt8Bytes(BinFrom,offset,intlen))ThenThrowMsg("Decrypt8Bytes()failed.")EndIfEndIfEndWhileDimi2=0Whilecount<>0IfPos<8Thenout(i2)=CByte(m(offset+preCrypt+Pos)XorprePlain(Pos))i2+=1count-=1Pos+=1EndIfIfPos=8Thenm=BinFrompreCrypt=Crypt-8Decrypt8Bytes(

7、BinFrom,offset,intlen)EndIfEndWhileFori=1To7IfPos<8ThenIf(m(offset+preCrypt+Pos)XorprePlain(Pos))<>0ThenThrowMsg("tailisnotfilledcorrect.")EndIfPos+=1IfPos=8Thenm=BinFrom3IfNot(Decrypt8Bytes(BinFrom,offset,intlen))ThenThrowMsg("Decrypt8Bytes()failed.")EndIfEndIfEndIfNe

8、xtReturnoutEndFunctionPrivateFunctionDecrypt8Bytes(ByValinput()AsByte,ByValoffsetAsInteger,_ByValintlenAsInteger)AsBo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。