![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
是这样的,想用PHP写一个简单的网游(天堂2)注册程序!但是游戏用户数据中的 password 用的是 binary(16)这种数据类型!
求一方法,把普通的 password 类型转换为 binary(16) 来储存!
在网上找了很多相关函数的资料~似乎不能直接转换成功!
本人对数据类型不了解,求助大家,写出转化函数的定酬谢!
下面是一段ASP的转化函数,大家可以参考一下:
[php]
<%
public function Encrypt(password)
dim key(16)
dim one,two,three,four
dim i
dim dstbytes(16)
bu_String2Bytes password, key
bu_String2Bytes password, dstbytes
one= bu_Bytes2Int(key, 0) * 213119 + 2529077
one = one - Fix(one/ 4294967296) * 4294967296
two = bu_Bytes2Int(key, 4) * 213247 + 2529089
two = two - Fix(two/ 4294967296) * 4294967296
three = bu_Bytes2Int(key, 8) * 213203 + 2529589
three = three - Fix(three/ 4294967296) * 4294967296
four = bu_Bytes2Int(key, 12) * 213821 + 2529997
four = four - Fix(four/ 4294967296) * 4294967296
call MyuwSplit(one, key(0), key(1), key(2), key(3))
call MyuwSplit(two, key(4), key(5), key(6), key(7))
call MyuwSplit(three, key(8), key(9), key(10), key(11))
call MyuwSplit(Four, key(12), key(13), key(14), key(15))
dstbytes(0) = dstbytes(0) xor key(0)
for i=1 to 15
dstbytes(i) = dstbytes(i) xor dstbytes(i-1) xor key(i and 15)
next
for i=0 to 15
if dstbytes(i) = 0 then
dstbytes(i) = &H66
end if
next
encrypt = "0x"
for i=0 to 15
if dstbytes(i) < &H10 then
encrypt = encrypt & "0" & Hex(dstbytes(i))
else
encrypt = encrypt & Hex(dstbytes(i))
end if
next
end function
Public Sub MyuwSplit(ByRef w, a, b, C, d)
d = Fix(w / &H1000000)
c = Fix((w - d * &H1000000) / &H10000)
b = Fix((w - d * &H1000000 - c * &H10000) / &H100)
a = Fix((w - d * &H1000000 - c * &H10000 - b * &H100))
End Sub
public Function bu_Bytes2Int(aBytes(), index)
dim rslt
rslt = aBytes(index) + aBytes(index+1)*256 + aBytes(index+2)*65536 + aBytes(index+3)*16777216
bu_Bytes2Int = rslt
End Function
Public Function bu_String2Bytes(str, aBytes())
nBytes = Len(str)
For i = 0 To nBytes - 1
aBytes(i) = Asc(Mid(str, i + 1, 1))
Next
bu_String2Bytes = nBytes
End Function
%>
[/php]
可以直接联系我:
QQ:3750347
[ 本帖最后由 XLEdoo 于 2006-12-14 04:18 PM 编辑 ]

