* Text decryption * expC1 Text to decrypt * expC2 Encryption key FUNCTION Uncrypt LPARAMETERS tcTxt,tcKey LOCAL lnPKey,lnLenKey,lnLenTxt,lcKey,lcRes,lnNPos,lnByte,lnAscKey,; lnSumAsc,lnPosIgnore,lnKeySXOR,lnKeyLXOR,lnKeyBXOR,lcKey lcKey=tcKey STORE LEN(lcKey) TO lnLenKey STORE LEN(tcTxt) TO lnLenTxt LOCAL ARRAY laSKey[lnLenTxt,2] STORE 0 TO lnSumAsc, lnKeyBXOR FOR lnPKey = 1 TO lnLenKey STORE lnSumAsc + ASC(SUBSTR(lcKey, lnPKey, 1)) TO lnSumAsc NEXT FOR lnPKey = 1 TO lnLenTxt STORE SUBSTR(lcKey, (lnPKey % lnLenKey)+1, 1) TO laSKey[lnPKey,1] STORE ASC(laSKey[lnPKey,1]) TO lnAscKey STORE BITXOR(lnKeyBXOR,BITAND(255,BITLSHIFT(lnAscKey, lnPKey%5))) TO lnKeyBXOR STORE lnPKey TO laSKey[lnPKey,2] NEXT STORE lnSumAsc % 3 TO lnPosIgnore STORE BITRSHIFT(lnSumAsc,lnLenKey%3) % 256 TO lnKeySXOR STORE lnLenKey % 256 TO lnKeyLXOR =ASORT(laSKey) STORE SPACE(lnLenTxt) TO lcRes FOR lnPos = 1 TO lnLenTxt STORE laSKey[lnPos,2] TO lnNPos STORE ASC(SUBSTR(tcTxt,lnPos,1)) TO lnByte STORE BITXOR(lnByte, ASC(laSKey[M.lnPos,1])) TO lnByte STORE BITXOR(lnByte, lnKeyBXOR) TO lnByte STORE BITXOR(lnByte, lnKeyLXOR) TO lnByte STORE BITXOR(lnByte, lnKeySXOR) TO lnByte STORE BITXOR(lnByte, 2^(1+lnNPos%4+lnPos%2)) TO lnByte STORE BITXOR(lnByte, 2^(1+lnPos%4)) TO lnByte STORE STUFF(lcRes, lnNPos, 1, CHR(lnByte)) TO lcRes NEXT RETURN lcRes