在InstallShield中难免会对一些东东做加密操作,下面的方法就是一个简单的加密解密方法。这个方法对字符串中的每个字符加17,解密时同样减17:
加密:
function STRING String2Password (szName) STRING szRight, szLeft, szAnswer, dummy; CHAR cChar; NUMBER nLength; begin dummy = "JOQWE"; szAnswer = ""; nLength = StrLength(szName); while (nLength > 0) StrSub(szRight, szName, 1, (nLength-1)); StrSub(szLeft, szName, 0, 1); cChar = STRTOCHAR(szLeft); cChar = cChar + 17; szName = szRight; CharReplace(szLeft,STRTOCHAR(szLeft),cChar,0); szAnswer = szAnswer + szLeft; nLength = nLength - 1; endwhile; szAnswer = szAnswer + dummy; return szAnswer; end;
解密:
function STRING Password2String (szPassword) NUMBER nLength, iCount; STRING szLeft, szRight, szAnswer; CHAR cChar; begin szAnswer = ""; nLength = StrLength(szPassword); for iCount = 1 to 4 StrSub(szRight, szPassword, 1, (nLength-1)); StrSub(szLeft, szPassword, 0, 1); cChar = STRTOCHAR(szLeft); cChar = cChar - 17; szPassword = szRight; CharReplace(szLeft,STRTOCHAR(szLeft),cChar,0); szAnswer = szAnswer + szLeft; nLength = nLength - 1; endfor; return szAnswer; end;
其中有一些方法我想拿出来单独讲一下:
计算字符串的长度:
StrLength(szName);
截取字符串:
StrSub(szLeft, szName, 0, 1);
第一个参数是输出参数,第二个是要操作的字符串,第三个是开始截取的位置,最后一个是截取结束的位置。
将字符串转化为字符:
STRTOCHAR(szLeft);
这个方法返回一个字符变量。