HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Help with Encryption functions

01-09-2004, 03:15 PM#1
KaTTaNa
I have a fairly long string, (longer than charMap in the functions below), containing only the characters present in charMap except period (.)
But for some reason Decrypt doesn't always decrypt the Crypted string correctly. It seems that it skips the last iteration in the loop so the first character should actually be somewhere deeper into the string.
I'm using the same salt for both Crypt and Decrypt.

So, can someone help me fix that bug?
Code:
function CryptString takes string source, integer salt returns string
    local string charMap = "...0123456789abcdefghijklmnopqrstuvwxyz-"
    local string result = source
    local string s
    local integer p
    loop
        exitwhen salt <= 0
        set s = SubString(source, 1,2)
        set p = 0
        loop
            exitwhen (p>=StringLength(charMap)) or (SubString(charMap, p, p+1)==s)
            set p = p+1
        endloop
        set result = SubString(result, 1, p)+SubString(result, 0, 1)+SubString(result, p, StringLength(result))
        set salt = salt / 2
    endloop
    return result
endfunction

function DecryptString takes string source, integer salt returns string
    local string charMap = "...0123456789abcdefghijklmnopqrstuvwxyz-"
    local string result = source
    local string s
    local integer p
    local integer slt = salt
    loop
        exitwhen salt <= 0
        set s = SubString(source, 0,1)
        set p = 0
        loop
            exitwhen (p >= StringLength(charMap)) or (SubString(charMap, p, p+1) == s)
            set p = p + 1
        endloop
        set result = SubString(result, p-1, p)+SubString(result, 0, p-1)+SubString(result, p, StringLength(result))
        set salt = salt / 2
    endloop
    return result
endfunction