<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>MYRADIO168的Blog - 我的VB</title><link>http://www.myradio168.net/wb/</link><description>  - </description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 100427</generator><language>zh-CN</language><copyright>Copyright 2010-2020 www.myradio168.net  ,  QQ超级群：219925149 , QQ普通群：16925777</copyright><pubDate>Sat, 16 May 2026 04:09:38 +0800</pubDate><item><title>鼠标点击文本框，得到点击所在行的整行文本</title><author>a@b.com (shijy1977)</author><link>http://www.myradio168.net/wb/post/11.html</link><pubDate>Thu, 10 Jan 2013 11:24:10 +0800</pubDate><guid>http://www.myradio168.net/wb/post/11.html</guid><description><![CDATA[<p>Private Sub RichTextBox_Click()<br />&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp; On Error Resume Next<br />&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp; Dim i, n, ss<br />&nbsp;&nbsp;&nbsp; Dim SearchText As String<br />&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp; i = 0<br />&nbsp;&nbsp;&nbsp; n = 0<br />&nbsp;&nbsp;&nbsp; ss = RichTextBox.SelStart<br />&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp; If RichTextBox.SelStart &lt; Len(RichTextBox.Text) Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = InStr(i + 1, RichTextBox.Text, vbCrLf)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If ss &gt; n Then i = n + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Loop While ss &gt;= n<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RichTextBox.SelStart = i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If n &lt;&gt; i Then RichTextBox.SelLength = n - i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If RichTextBox.SelText &lt;&gt; &quot;&quot; Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Msgbox RichTextBox.SelText<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; '<br />End Sub</p>]]></description><category>我的VB</category><comments>http://www.myradio168.net/wb/post/11.html#comment</comments><wfw:comment>http://www.myradio168.net/wb/</wfw:comment><wfw:commentRss>http://www.myradio168.net/wb/feed.asp?cmt=11</wfw:commentRss><trackback:ping>http://www.myradio168.net/wb/cmd.asp?act=tb&amp;id=11&amp;key=f9d66747</trackback:ping></item><item><title>Mapinfo的WOR文件转换成GST文件</title><author>a@b.com (shijy1977)</author><link>http://www.myradio168.net/wb/post/7.html</link><pubDate>Fri, 28 Sep 2012 11:02:46 +0800</pubDate><guid>http://www.myradio168.net/wb/post/7.html</guid><description><![CDATA[<p>WOR文件转换成GST文件<br />&nbsp;</p><p>在csdn社区里，答案是：</p><p>1.先打开wor&nbsp;&nbsp; <br />2.&quot;工具&quot;-&gt;&quot;工具管理器&quot;&nbsp;&nbsp; <br />3.添加&quot;Mapx&nbsp;&nbsp; Geoset&nbsp;&nbsp; Utility&quot;&nbsp;&nbsp; <br />4.然后使用它的时候，会有&ldquo;Save&nbsp;&nbsp; Mapx&nbsp;&nbsp; Geoset...&quot;</p>]]></description><category>我的VB</category><comments>http://www.myradio168.net/wb/post/7.html#comment</comments><wfw:comment>http://www.myradio168.net/wb/</wfw:comment><wfw:commentRss>http://www.myradio168.net/wb/feed.asp?cmt=7</wfw:commentRss><trackback:ping>http://www.myradio168.net/wb/cmd.asp?act=tb&amp;id=7&amp;key=1abe8776</trackback:ping></item><item><title>VB实现标准TEA加密解密模块</title><author>a@b.com (shijy1977)</author><link>http://www.myradio168.net/wb/post/6.html</link><pubDate>Fri, 28 Sep 2012 10:50:47 +0800</pubDate><guid>http://www.myradio168.net/wb/post/6.html</guid><description><![CDATA[<p>Private Const OFFSET_4 = 4294967296#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&amp;h100000000 的数值<br />Private Const MAXINT_4 = 2147483647&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '整型数据所能表示的最大正数值 (&amp;h7fffffff)<br />Private Const Bit_32 = 2147483648#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&amp;h80000000 的正整数形式<br />Private Const DELTA = &amp;H9E3779B9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'TEA算法的DELTA值</p><p>Private Function AddLong(lX As Long, lY As Long) As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '长整数加法函数<br />&nbsp;&nbsp;&nbsp; Dim lX4 As Long<br />&nbsp;&nbsp;&nbsp; Dim lY4 As Long<br />&nbsp;&nbsp;&nbsp; Dim lX8 As Long<br />&nbsp;&nbsp;&nbsp; Dim lY8 As Long<br />&nbsp;&nbsp;&nbsp; Dim lResult As Long<br />&nbsp;&nbsp;&nbsp; lX8 = lX And &amp;H80000000<br />&nbsp;&nbsp;&nbsp; lY8 = lY And &amp;H80000000<br />&nbsp;&nbsp;&nbsp; lX4 = lX And &amp;H40000000<br />&nbsp;&nbsp;&nbsp; lY4 = lY And &amp;H40000000<br />&nbsp;&nbsp;&nbsp; lResult = (lX And &amp;H3FFFFFFF) + (lY And &amp;H3FFFFFFF)<br />&nbsp;&nbsp;&nbsp; If lX4 And lY4 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = lResult Xor &amp;H80000000 Xor lX8 Xor lY8<br />&nbsp;&nbsp;&nbsp; ElseIf lX4 Or lY4 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If lResult And &amp;H40000000 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = lResult Xor &amp;HC0000000 Xor lX8 Xor lY8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = lResult Xor &amp;H40000000 Xor lX8 Xor lY8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = lResult Xor lX8 Xor lY8<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; AddLong = lResult<br />End Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />Private Function SubtractLong(lX As Long, lY As Long) As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '长整数减法函数<br />&nbsp;&nbsp;&nbsp; Dim lX8 As Long<br />&nbsp;&nbsp;&nbsp; Dim lY8 As Long<br />&nbsp;&nbsp;&nbsp; Dim mX As Double<br />&nbsp;&nbsp;&nbsp; Dim mY As Double<br />&nbsp;&nbsp;&nbsp; Dim mResult As Double<br />&nbsp;&nbsp;&nbsp; Dim lResult As Long<br />&nbsp;&nbsp;&nbsp; lX8 = lX And &amp;H80000000<br />&nbsp;&nbsp;&nbsp; lY8 = lY And &amp;H80000000<br />&nbsp;&nbsp;&nbsp; mX = lX And &amp;H7FFFFFFF<br />&nbsp;&nbsp;&nbsp; mY = lY And &amp;H7FFFFFFF<br />&nbsp;&nbsp;&nbsp; If lX8 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If lY8 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mResult = mX - mY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mX = mX + Bit_32<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mResult = mX - mY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If lY8 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mY = lY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mResult = mX - mY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mResult = mX - mY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; If mResult &lt; 0 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = ((Bit_32 + mResult) Or &amp;H80000000) And &amp;HFFFFFFFF<br />&nbsp;&nbsp;&nbsp; ElseIf mResult &gt; MAXINT_4 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = ((mResult - Bit_32) Or &amp;H80000000) And &amp;HFFFFFFFF<br />&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = mResult And &amp;HFFFFFFFF<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; SubtractLong = lResult<br />End Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />Private Function LeftRotateLong(lValue As Long, lBits As Integer) As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '按位左移函数<br />&nbsp;&nbsp;&nbsp; Dim lngSign As Long, intI As Integer<br />&nbsp;&nbsp;&nbsp; Dim mValue As Long<br />&nbsp;&nbsp;&nbsp; lBits = lBits Mod 32<br />&nbsp;&nbsp;&nbsp; mValue = lValue<br />&nbsp;&nbsp;&nbsp; If lBits = 0 Then LeftRotateLong = mValue: Exit Function<br />&nbsp;&nbsp;&nbsp; For intI = 1 To lBits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lngSign = mValue And &amp;H40000000<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mValue = (mValue And &amp;H3FFFFFFF) * 2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If lngSign And &amp;H40000000 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mValue = mValue Or &amp;H80000000<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; Next<br />&nbsp;&nbsp;&nbsp; LeftRotateLong = mValue<br />End Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />Private Function RightRotateLong(lValue As Long, lBits As Integer) As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '按位右移函数<br />&nbsp;&nbsp;&nbsp; Dim lngSign As Long, intI As Integer<br />&nbsp;&nbsp;&nbsp; Dim mValue As Long<br />&nbsp;&nbsp;&nbsp; mValue = lValue<br />&nbsp;&nbsp;&nbsp; lBits = lBits Mod 32<br />&nbsp;&nbsp;&nbsp; If lBits = 0 Then RightRotateLong = mValue: Exit Function<br />&nbsp;&nbsp;&nbsp; For intI = 1 To lBits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lngSign = mValue And &amp;H80000000<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mValue = (mValue And &amp;H7FFFFFFF) \ 2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If lngSign Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mValue = mValue Or &amp;H40000000<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; Next<br />&nbsp;&nbsp;&nbsp; RightRotateLong = mValue<br />End Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />Public Sub TeaEncode(v() As Long, k() As Long, lType As Integer)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '标准的TEA加密过程,参数lType 为1时表示16轮迭代(QQ使用的就是16轮迭代),否则为32轮迭代<br />&nbsp;&nbsp;&nbsp; Dim Y As Long, Z As Long<br />&nbsp;&nbsp;&nbsp; Dim K1 As Long, K2 As Long, K3 As Long, K4 As Long<br />&nbsp;&nbsp;&nbsp; Dim L1 As Long, L2 As Long, L3 As Long, L4 As Long<br />&nbsp;&nbsp;&nbsp; Dim Sum As Long<br />&nbsp;&nbsp;&nbsp; Dim i As Integer, Rounds As Integer<br />&nbsp;&nbsp;&nbsp; Dim mResult(0 To 1) As Long<br />&nbsp;&nbsp;&nbsp; Y = v(0)<br />&nbsp;&nbsp;&nbsp; Z = v(1)<br />&nbsp;&nbsp;&nbsp; K1 = k(0)<br />&nbsp;&nbsp;&nbsp; K2 = k(1)<br />&nbsp;&nbsp;&nbsp; K3 = k(2)<br />&nbsp;&nbsp;&nbsp; K4 = k(3)<br />&nbsp;&nbsp;&nbsp; If lType = 1 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rounds = 16<br />&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rounds = 32<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; For i = 1 To Rounds<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'sum += delta ;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sum = AddLong(Sum, DELTA)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'y += (z&lt;&lt;4)+k[0] ^ z+sum ^ (z&gt;&gt;5)+k[1]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L1 = LeftRotateLong(Z, 4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L1 = AddLong(L1, K1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L2 = AddLong(Z, Sum)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3 = RightRotateLong(Z, 5)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3 = AddLong(L3, K2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L4 = L1 Xor L2 Xor L3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Y = AddLong(Y, L4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'z += (y&lt;&lt;4)+k[2] ^ y+sum ^ (y&gt;&gt;5)+k[3]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L1 = LeftRotateLong(Y, 4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L1 = AddLong(L1, K3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L2 = AddLong(Y, Sum)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3 = RightRotateLong(Y, 5)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3 = AddLong(L3, K4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L4 = L1 Xor L2 Xor L3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Z = AddLong(Z, L4)<br />&nbsp;&nbsp;&nbsp; Next<br />&nbsp;&nbsp;&nbsp; v(0) = Y<br />&nbsp;&nbsp;&nbsp; v(1) = Z<br />End Sub<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />Public Sub TeaDecode(v() As Long, k() As Long, lType As Integer)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '标准TEA解密过程,参数lType 为1时表示16轮迭代(QQ使用的就是16轮迭代),否则为32轮迭代<br />&nbsp;&nbsp;&nbsp; Dim Y As Long, Z As Long<br />&nbsp;&nbsp;&nbsp; Dim K1 As Long, K2 As Long, K3 As Long, K4 As Long<br />&nbsp;&nbsp;&nbsp; Dim L1 As Long, L2 As Long, L3 As Long, L4 As Long<br />&nbsp;&nbsp;&nbsp; Dim Sum As Long<br />&nbsp;&nbsp;&nbsp; Dim i As Integer, Rounds As Integer<br />&nbsp;&nbsp;&nbsp; Dim mResult(0 To 1) As Long<br />&nbsp;&nbsp;&nbsp; Y = v(0)<br />&nbsp;&nbsp;&nbsp; Z = v(1)<br />&nbsp;&nbsp;&nbsp; K1 = k(0)<br />&nbsp;&nbsp;&nbsp; K2 = k(1)<br />&nbsp;&nbsp;&nbsp; K3 = k(2)<br />&nbsp;&nbsp;&nbsp; K4 = k(3)<br />&nbsp;&nbsp;&nbsp; If lType = 1 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rounds = 16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sum = LeftRotateLong(DELTA, 4)<br />&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rounds = 32<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sum = LeftRotateLong(DELTA, 5)<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; For i = 1 To Rounds<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L1 = LeftRotateLong(Y, 4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L1 = AddLong(L1, K3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L2 = AddLong(Y, Sum)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3 = RightRotateLong(Y, 5)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3 = AddLong(L3, K4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L4 = L1 Xor L2 Xor L3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Z = SubtractLong(Z, L4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L1 = LeftRotateLong(Z, 4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L1 = AddLong(L1, K1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L2 = AddLong(Z, Sum)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3 = RightRotateLong(Z, 5)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L3 = AddLong(L3, K2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L4 = L1 Xor L2 Xor L3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Y = SubtractLong(Y, L4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sum = SubtractLong(Sum, DELTA)<br />&nbsp;&nbsp;&nbsp; Next<br />&nbsp;&nbsp;&nbsp; v(0) = Y<br />&nbsp;&nbsp;&nbsp; v(1) = Z<br />End Sub</p><p><br />------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />TEAEncode(V() as Long,K() as Long,lType As Integer)过程中,数组V既是提供明文的参数,也是返回加密后密文的参数 <br />TEADecode(V() as Long,K() as Long,lType As Integer)过程中,数组V既是提供密文的参数,也是返回解密后明文的参数 <br /><br />具体范例如下: <br /><br />Dim V(0 to 1) As Long <br />Dim K(0 to 3) As Long <br /><br />'以下是试验用64位明文 <br /><br />V(0)=&amp;H12345678 <br />V(1)=&amp;H87654321 <br /><br />'以下是试验用128位密匙 <br /><br />K(0)=&amp;H11111111 <br />K(1)=&amp;H22222222 <br />K(2)=&amp;H33333333 <br />K(3)=&amp;H44444444 <br /><br />'显示输出明文 <br />Print &quot;明文:&quot; &amp; V(0) &amp; &quot; -- &quot; &amp; V(1) <br /><br />'以下演示加密过程 <br />Call TEAEncode(V,K,2) 'TEA算法 32轮加密 <br />Print &quot;加密结果:&quot; &amp; V(0) &amp; &quot; -- &quot; &amp; V(1) <br /><br />'以下演示解密过程 <br />Call TEADecode(V,K,2) 'TEA算法 32轮加密 <br />Print &quot;解密结果:&quot; &amp; V(0) &amp; &quot; -- &quot; &amp; V(1) <br /><br />------------------------------------------------------ <br />另外副上TEA算法描述中给出的C代码: <br /><br />void decode(long* v,long* k) { <br />unsigned long n=32, sum, y=v[0], z=v[1], <br />delta=0x9e3779b9 ; <br />sum=delta&lt;&lt;5 ; <br />/* start cycle */ <br />while (n--&gt;0) { <br />z-= (y&lt;&lt;4)+k[2] ^ y+sum ^ (y&gt;&gt;5)+k[3] ; <br />y-= (z&lt;&lt;4)+k[0] ^ z+sum ^ (z&gt;&gt;5)+k[1] ; <br />sum-=delta ; <br />} <br />/* end cycle */ <br />v[0]=y ; v[1]=z ; } <br /><br /><br />void code(long* v, long* k) { <br />unsigned long y=v[0],z=v[1], sum=0,delta=0x9e3779b9, n=32; <br />unsigned long m; /* a key schedule constant */ <br />while (n--&gt;0) { /* basic cycle start */ <br />sum += delta ; <br />printf(&quot;%lu;%lu;%lu\n&quot;,sum,sum-delta,delta); <br />y += (z&lt;&lt;4)+k[0] ^ z+sum ^ (z&gt;&gt;5)+k[1] ; <br />z += (y&lt;&lt;4)+k[2] ^ y+sum ^ (y&gt;&gt;5)+k[3] ; /* end cycle */ <br />} <br />v[0]=y;v[1]=z ;}</p>]]></description><category>我的VB</category><comments>http://www.myradio168.net/wb/post/6.html#comment</comments><wfw:comment>http://www.myradio168.net/wb/</wfw:comment><wfw:commentRss>http://www.myradio168.net/wb/feed.asp?cmt=6</wfw:commentRss><trackback:ping>http://www.myradio168.net/wb/cmd.asp?act=tb&amp;id=6&amp;key=69afd619</trackback:ping></item></channel></rss>
