| 1970 | //--------------------------------------------------------------------------- |
| 1971 | char * szSecurePassword = "Y_6IZ!h7IYb4QgE"; |
| 1972 | AnsiString SecurePassword(AnsiString password) |
| 1973 | { |
| 1974 | WORD l = password.Length(); |
| 1975 | int size = MAX(25, l+2); |
| 1976 | BYTE * data = new BYTE[size]; |
| 1977 | |
| 1978 | Randomize(); |
| 1979 | for(int i=2; i<size; i++) |
| 1980 | data[i] = (BYTE)(Random()*256.0); |
| 1981 | |
| 1982 | *(WORD *)data = l; |
| 1983 | strcpy(data+2, password.c_str()); |
| 1984 | |
| 1985 | for(int i=0, j=0; i<size; i++) |
| 1986 | { |
| 1987 | data[i] ^= (BYTE)szSecurePassword[j++]; |
| 1988 | if( ! szSecurePassword[j] ) |
| 1989 | j = 0; |
| 1990 | } |
| 1991 | AnsiString rv = ToHexMas(data, size); |
| 1992 | delete [] data; |
| 1993 | return rv; |
| 1994 | } |
| 1995 | //--------------------------------------------------------------------------- |
| 1996 | AnsiString UnsecurePassword(AnsiString secure_password) |
| 1997 | { |