Re: Encryption under I4GL
Posted in 1995
smorrow@dotrisc.cfr.usf.edu (Steve Morrow) writes: >We have a Fourgen screen which prompts for a PIN number, and the value >entered is referenced against a value in a table for validation. >I am interested in encrypting this PIN number. Since such a function >doesn't exist (yet) in 4GL, has anybody written such a routine, or has >anyone made use of the UNIX encrypt() call from within I4GL? >Any sample code or pointers would be appreciated. >Thanks! Following is a simple encryption function based on a variation of ROT13 that I wrote for password encryption. You could probably use a variation of this scheme to do what you want. ___ ___ Senior Consultant / ) __ . __/ /_ ) _ _ __ Informix Software Inc. (303) 850-0210 _/__/ (_(_ (/ / (_(_ _/__) (-' ~/ '(_- 5299 DTC Blvd #740 Englewood CO 80111 #---------------------------------------------------------------------- FUNCTION encrypt_fg(l_password) # ARGUMENTS: CHAR(8) or less to which to apply password en-/de-cryption # PURPOSE: Encrypt or decrypt a user password # RETURNS: En- or De-crypted value (NULL indicates invalid value passed in.) #---------------------------------------------------------------------- DEFINE l_password CHAR(8) DEFINE l_encrypt CHAR(8) DEFINE l_char_set CHAR(62) DEFINE l_encrypt_set CHAR(62) DEFINE i, j, k SMALLINT LET l_char_set = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" LET l_encrypt_set = "NoPqRsTuVwXyZAbCdEfGhIjKlMnOpQrStUvWxYzaBcDeFgHiJkLm5678901234" INITIALIZE l_encrypt TO NULL IF LENGTH(l_password) > 0 THEN LET j = 1 LET k = LENGTH(l_password) FOR i = 1 TO LENGTH(l_password) FOR j = 1 TO LENGTH(l_char_set) IF l_password[i,i] = l_char_set[j,j] THEN LET l_encrypt[k,k] = l_encrypt_set[j,j] LET k = k - 1 EXIT FOR END IF END FOR IF j > LENGTH(l_char_set) THEN LET l_encrypt = NULL EXIT FOR END IF END FOR END IF RETURN l_encrypt END FUNCTION # encrypt_fg