G
GPO
Rob Bovey posted a bit of code to http://www.devx.com/tips/Tip/5676
Function szEncryptDecrypt(ByVal szData As String) As String
''' This key value can be changed to alter the
''' encryption, but it must be the same for both
''' encryption and decryption.
Const KEY_TEXT As String = "ScratchItYouFool"
''' The KEY_OFFSET is optional, and may be any
''' value 0-64.
''' Likewise, it needs to be the same coming/going.
Const KEY_OFFSET As Long = 38
Dim bytKey() As Byte
Dim bytData() As Byte
Dim lNum As Long
Dim szKey As String
For lNum = 1 To ((Len(szData) \ Len(KEY_TEXT)) + 1)
szKey = szKey & KEY_TEXT
Next lNum
bytKey = Left$(szKey, Len(szData))
bytData = szData
For lNum = LBound(bytData) To UBound(bytData)
If lNum Mod 2 Then
bytData(lNum) = bytData(lNum) Xor (bytKey(lNum) _
+ KEY_OFFSET)
Else
bytData(lNum) = bytData(lNum) Xor (bytKey(lNum) _
- KEY_OFFSET)
End If
Next lNum
szEncryptDecrypt = bytData
End Function
I'm finding that it generates an awful lot of overflow errors because the
value being returned to bytData(lNum) is not in a byte range. There seem to
be dozens of scenarios where varying the key and the key offset (seemingly
within the expected parameters) that bytData(lNum) Xor (bytKey(lNum) -
KEY_OFFSET) cannot return byte data OR that the final bytData cannot be
converted back to a string.
Am I missing something here?
Do I need to do some preliminary checks before setting the constants and
passing data into the function?
Regards
GPO
Function szEncryptDecrypt(ByVal szData As String) As String
''' This key value can be changed to alter the
''' encryption, but it must be the same for both
''' encryption and decryption.
Const KEY_TEXT As String = "ScratchItYouFool"
''' The KEY_OFFSET is optional, and may be any
''' value 0-64.
''' Likewise, it needs to be the same coming/going.
Const KEY_OFFSET As Long = 38
Dim bytKey() As Byte
Dim bytData() As Byte
Dim lNum As Long
Dim szKey As String
For lNum = 1 To ((Len(szData) \ Len(KEY_TEXT)) + 1)
szKey = szKey & KEY_TEXT
Next lNum
bytKey = Left$(szKey, Len(szData))
bytData = szData
For lNum = LBound(bytData) To UBound(bytData)
If lNum Mod 2 Then
bytData(lNum) = bytData(lNum) Xor (bytKey(lNum) _
+ KEY_OFFSET)
Else
bytData(lNum) = bytData(lNum) Xor (bytKey(lNum) _
- KEY_OFFSET)
End If
Next lNum
szEncryptDecrypt = bytData
End Function
I'm finding that it generates an awful lot of overflow errors because the
value being returned to bytData(lNum) is not in a byte range. There seem to
be dozens of scenarios where varying the key and the key offset (seemingly
within the expected parameters) that bytData(lNum) Xor (bytKey(lNum) -
KEY_OFFSET) cannot return byte data OR that the final bytData cannot be
converted back to a string.
Am I missing something here?
Do I need to do some preliminary checks before setting the constants and
passing data into the function?
Regards
GPO