作者yohoboy (他X的政府拆我家)
看板Visual_Basic
标题Re: [VB6 ] checksum问题
时间Thu Aug 2 21:33:49 2012
虽然是旧文,刚好我也碰到这问题,提出我写的方式,给需要的人参考。
Private Sub Command1_Click()
Dim Checksume As Byte '宣告Checksume 为 Byte
Checksume = 0 '设定初始值
For i = 1 To Len(Text1.Text) '新增物件文字盒Text1,并计算文字盒字数
Checksume = Checksume Xor Asc(Mid(Text1.Text, i, 1))
'将Text1内文字逐一取出并将转成Asc格式後与Checksume 做Xor
Next i
Text2.Text = Chr(Checksume) '将Xor结果显示在Text2文字盒内
End Sub
参考看看,我也是参考别人後套用的。
※ 引述《colawei (D逃)》之铭言:
: ※ 引述《badsan (.........)》之铭言:
: : 请问一下各位前辈....
: : 我想做一各 xor checksum 的验证 function
: : 希望各位大大可以指点一下...
: : Xor Checksum 他的流程原理是怎样跑的??
: : 当然能尽量详细一点越好~_~...(小弟不才理解力不够好...)
: CheckSum: 通常用在资料传输上,为确保资料的完整性及正确性,
: 而在每个封包或资料录後面加入的检查位元.
: 市面上常用的CheckSum有Xor及CRC.其它还有汉明检测法等等很多
: 基本上CheckSum的演算法在制定Protocol时会同时规定好
: 使用何种演算法.对哪些任容做运算等等.
: 而我们使用的 Xor CheckSum ,通常采用Byte by Byte,
: 一个位元组一个位元组算.
: 例如当资料内容是"APPLE"时.
: Xor CheckSum= "A" xor "P" xor "P" xor "L" xor "E"
: = 0x48
: = "H"
: 所以最後送出的内容会是 "APPLEH"
: : 假设我要一次送出16进位的 1F 20 01 这样的字串数值做 xor checksum
: : 那结果会得到多少??
: : 是不是要先将上面数值转成2进制
: : 00011111 00010100 00000001
: : 接下来该做那些步骤流程??
: 在VB中,可以直接对数字做XOR, 所以不用转二进位.
: 直接用ASC()加回圈取出值就好了
: 上例的结果=00001010
: : 希望有大大可以帮忙指点一下...对Xor Checksum 这真的一点观念都没有....
: : 我是想自己写啦...只是不知从何写起...完成不知道整各运作过程...
: : 所以要请各位前辈指点指点...
: : 当然如果有好心大大愿意直接提供code让我自己参考慢慢研究也行...
: : 先跟各位说声谢谢了...
: 手边没有简单点的例子,如果还有不清楚的再上来问吧.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 106.1.134.54
1F:推 yauhh:文字变byte可以用 byte1 = StrConv(data, vbFromUnicode) 08/03 00:17