ArxBzFhblxphS Posted June 22, 2009 Share Posted June 22, 2009 (edited) Edited August 9, 2009 by Thanubis Link to comment Share on other sites More sharing options...
BugFix Posted June 22, 2009 Share Posted June 22, 2009 Set and Get data with DllStructSetData() and DllStructGetData(), then it works fine: expandcollapse popup$ret = _xor("test","Test") Msgbox(0,"Test - encode", $ret) $ret = _xor($ret,"Test", True) Msgbox(0,"Test - decode", $ret) Func _xor($vData,$vKey,$fReturnString = False) Local $nDataLen, $nKeyLen, $vBin, $vSz Local $iDataPtr, $iKeyPtr = 0 If IsBinary($vData) Then $nDataLen = BinaryLen($vData) Else $nDataLen = StringLen($vData) EndIf If IsBinary($vKey) Then $nKeyLen = BinaryLen($vKey) Else $nKeyLen = StringLen($vKey) EndIf $vBin = DllStructCreate("ubyte key[" & $nKeyLen & "];ubyte data[" & $nDataLen & "];ubyte zterm") ;~ $vBin.key = $vKey ;~ $vBin.data = $vData DllStructSetData($vBin, 'key', $vKey) DllStructSetData($vBin, 'data', $vData) For $iDataPtr = 1 To $nDataLen $iKeyPtr += 1 DllStructSetData($vBin,2,BitXOR(DllStructGetData($vBin,2,$iDataPtr),DllStructGetData($vBin,1,$iKeyPtr)),$iDataPtr) If $iKeyPtr = $nKeyLen Then $iKeyPtr = 0 Next If $fReturnString Then $vSz = DllStructCreate("char data[" & $nDataLen+1 & "]",DllStructGetPtr($vBin,2)) ;~ Return $vSz.data Return DllStructGetData($vSz, 'data') EndIf ;~ Return $vBin.data Return DllStructGetData($vBin, 'data') EndFunc Best Regards BugFix Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now