转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
[原创]TEA算法的VB实现代码         ★★★★

[原创]TEA算法的VB实现代码

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1572 更新时间:2009/4/23 15:37:20

前些日子不少人都要挂QQ,有客户需求就自然有人去研究,所以不少人开始研究QQ的协议.其中最重要的一步就是研究QQ使用的加密算法---TEA算法

关于TEA算法的描述以及C语言源码这里就不多说了,现在给出该算法的VB实现

''''       ----------------------------------------------------------------------------------
''''      |                                                                                  |
''''      |                                标准TEA加密解密模块                               |
''''      |                                     Zeffy 制作                                   |
''''      |                                     QQ:8481862                                   |
''''      |                             Email:Zephyrmage@163.com                             |
''''      |                                                                                  |
''''      |                                     2005.8.16                                    |
''''      |                                                                                  |
''''       ----------------------------------------------------------------------------------

Private Const OFFSET_4 = 4294967296#    ''''&h100000000 的数值
Private Const MAXINT_4 = 2147483647     ''''整型数据所能表示的最大正数值 (&h7fffffff)
Private Const Bit_32 = 2147483648#      ''''&h80000000 的正整数形式
Private Const DELTA = &H9E3779B9        ''''TEA算法的DELTA值

Private Function AddLong(lX As Long, lY As Long) As Long ''''长整数加法函数
    Dim lX4 As Long
    Dim lY4 As Long
    Dim lX8 As Long
    Dim lY8 As Long
    Dim lResult As Long
 
    lX8 = lX And &H80000000
    lY8 = lY And &H80000000
    lX4 = lX And &H40000000
    lY4 = lY And &H40000000
 
    lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)
 
    If lX4 And lY4 Then
        lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
    ElseIf lX4 Or lY4 Then
        If lResult And &H40000000 Then
            lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
        Else
            lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
        End If
    Else
        lResult = lResult Xor lX8 Xor lY8
    End If
 
    AddLong = lResult
End Function

Private Function SubtractLong(lX As Long, lY As Long) As Long ''''长整数减法函数
    Dim lX8 As Long
    Dim lY8 As Long
    Dim mX As Double
    Dim mY As Double
    Dim mResult As Double
    Dim lResult As Long
   
    lX8 = lX And &H80000000
    lY8 = lY And &H80000000
   
    mX = lX And &H7FFFFFFF
    mY = lY And &H7FFFFFFF
   
    If lX8 Then
       If lY8 Then
          mResult = mX - mY
       Else
          mX = mX + Bit_32
          mResult = mX - mY
       End If
    Else
       If lY8 Then
          mY = lY
          mResult = mX - mY
       Else
          mResult = mX - mY
       End If
    End If
   
   
    If mResult < 0 Then
       lResult = ((Bit_32 + mResult) Or &H80000000) And &HFFFFFFFF
    ElseIf mResult > MAXINT_4 Then
       lResult = ((mResult - Bit_32) Or &H80000000) And &HFFFFFFFF
    Else
       lResult = mResult And &HFFFFFFFF
    End If
   
    SubtractLong = lResult
 
End Function

Private Function LeftRotateLong(lValue As Long, lBits As Integer) As Long ''''按位左移函数
    Dim lngSign As Long, intI As Integer
    Dim mValue As Long
   
    lBits = lBits Mod 32
    mValue = lValue
    If lBits = 0 Then LeftRotateLong = mValue: Exit Function
   
    For intI = 1 To lBits
        lngSign = mValue And &H40000000
        mValue = (mValue And &H3FFFFFFF) * 2
    
        If lngSign And &H40000000 Then
           mValue = mValue Or &H80000000
        End If
    Next
   
    LeftRotateLong = mValue
End Function


Private Function RightRotateLong(lValue As Long, lBits As Integer) As Long ''''按位右移函数
   Dim lngSign As Long, intI As Integer
   Dim mValue As Long
  
   mValue = lValue
   lBits = lBits Mod 32
  
   If lBits = 0 Then RightRotateLong = mValue: Exit Function
  
   For intI = 1 To lBits
      lngSign = mValue And &H80000000
      mValue = (mValue And &H7FFFFFFF) \ 2
      If lngSign Then
         mValue = mValue Or &H40000000
      End If
   Next
   RightRotateLong = mValue
End Function

Public Sub TeaEncode(v() As Long, k() As Long, lType As Inte

[1] [2]  下一页


[Delphi程序]强角点检测算子的Pascal实现代码  [Delphi程序]Nearest Neighbor、Bilinear、Bicubic算法的Delph…
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台