VB Code:
Private Function ScrambleString(ByVal Str As String, Optional SeekInit As Long = 0) As String
'
' Made by Michael Ciurescu (CVMichael from vbforums.com)
' Original thread: [url]http://www.vbforums.com/showthread.php?t=415267[/url]
'
Dim K As Long, Sk As Long, Tmp As String, RndPos As Long
Sk = SeekInit
For K = 1 To Len(Str)
Sk = Sk + Asc(Mid$(Str, K, 1))
Next K
Rnd -1
Randomize Sk
For K = 1 To Len(Str)
RndPos = 1 + Fix(Len(Str) * Rnd)
' SWAP Chars
Tmp = Mid$(Str, K, 1)
Mid$(Str, K, 1) = Mid$(Str, RndPos, 1)
Mid$(Str, RndPos, 1) = Tmp
Next K
ScrambleString = Str
End Function
Private Function UnscrambleString(ByVal Str As String, Optional SeekInit As Long = 0) As String
'
' Made by Michael Ciurescu (CVMichael from vbforums.com)
' Original thread: [url]http://www.vbforums.com/showthread.php?t=415267[/url]
'
Dim K As Long, Sk As Long, Tmp As String, RndPos As Long
Dim RndArr() As Long
Sk = SeekInit
For K = 1 To Len(Str)
Sk = Sk + Asc(Mid$(Str, K, 1))
Next K
Rnd -1
Randomize Sk
ReDim RndArr(Len(Str) - 1)
For K = 1 To Len(Str)
RndArr(K - 1) = 1 + Fix(Len(Str) * Rnd)
Next K
For K = Len(Str) To 1 Step -1
RndPos = RndArr(K - 1)
' SWAP Chars
Tmp = Mid$(Str, K, 1)
Mid$(Str, K, 1) = Mid$(Str, RndPos, 1)
Mid$(Str, RndPos, 1) = Tmp
Next K
UnscrambleString = Str
End Function
This is an example how to use the functions: