$CPU 8086 ' make compatible with XT systems $LIB ALL OFF ' turn off all PowerBASIC libraries $ERROR ALL OFF ' turn off all PowerBASIC error checking $OPTIMIZE SPEED ' optimize for smaller code $COMPILE UNIT ' compile to a UNIT (.PBU) '$COMPILE EXE ' compile to a UNIT (.PBU) DEFINT A-Z ' Required for all numeric functions, forces PB to not ' include floating point in UNIT (makes it smaller) '/*------------------------------------------------------------------*/ $CODE SEG "MLIB5" '/*------------------------------------------------------------------*/ ' FUNCTION ENCRYPTZ(BYVAL PTC$, BYVAL PW$) AS STRING ' x1 = 1 ' FOR x2 = 1 TO LEN(PTC$) ' c1 = ASC(MID$(PTC$, x2, 1)) ' c2 = ASC(MID$(PW$, x1, 1)) ' c3 = c1 XOR c2 ' Encrypted$ = Encrypted$ + CHR$(c3) ' INCR x1 ' IF x1 > LEN(PW$) THEN ' x1 = 1 ' END IF ' NEXT x2 ' FUNCTION = Encrypted$ ' END FUNCTION '/*------------------------------------------------------------------*/ FUNCTION ENCRYPTER(BYVAL S$, PW$, N%) AS STRING PW$ = PW$ + "+_)(*&^%$#@!:{}?><,./;'[]=-0987654321" V$ = "" FOR CNT = 32 TO 255 V$ = V$ + CHR$(CNT) NEXT CNT VL = LEN(V$) LS = LEN(S$) J8 = 0 FOR I8 = 1 TO LS J8 = J8 + 1 IF J8 > LEN(PW$) THEN J8 = 1 S8 = INSTR(1,V$,MID$(S$,I8,1)) IF N = 1 THEN S8 = S8 + INSTR(1,V$,MID$(PW$,J8,1))+10 IF S8 > VL THEN S8 = S8 - VL ELSE GOTO ENCRYPT2JUMP END IF ELSE S8 = S8 - INSTR(1,V$,MID$(PW$,J8,1))-10 IF S8 <= 0 THEN S8 = S8 + VL END IF ENCRYPT2JUMP: MID$(S$,I8,1) = MID$(V$,S8,1) NEXT I8 FUNCTION = S$ END FUNCTION '/*------------------------------------------------------------------*/ ' ENCRYPT(STRING$,PASSWORD$) ' Returns a string where the STRING$ has been encrypted using the phrase ' in PASSWORD$. ' EXAMPLE: T$ = ENCRYPT("THE MOON","PASSWORD") T$ = 'tƒ^‰Œ}' ' ' See DECRYPT '/*------------------------------------------------------------------*/ FUNCTION ENCRYPT(S$,PW$) PUBLIC AS STRING FUNCTION = ENCRYPTER(S$,PW$,1) END FUNCTION '/*------------------------------------------------------------------*/ ' DECRYPT(STRING$,PASSWORD$) ' Returns a string where the STRING$ has been decrypted using the phrase ' in PASSWORD$. ' EXAMPLE: T$ = DECRYPT("tƒ^‰Œ}","PASSWORD") T$ = 'tƒ^‰Œ}' ' ' See ENCRYPT '/*------------------------------------------------------------------*/ FUNCTION DECRYPT(S$,PW$) PUBLIC AS STRING FUNCTION = ENCRYPTER(S$,PW$,0) END FUNCTION '/*------------------------------------------------------------------*/ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' LINE INPUT "PHRASE "; PTC$ ' INPUT "Password"; PW$ ' ' ENCRYPTED$ = ENCRYPT(PTC$, PW$) ' DECRYPTED$ = DECRYPT(ENCRYPTED$, PW$) ' ' PRINT " PHRASE: "; CHR$(34); PTC$ ; CHR$(34) ' PRINT "ENCRYPTED: "; CHR$(34); ENCRYPTED$; CHR$(34) ' PRINT "DECRYPTED: "; CHR$(34); DECRYPTED$; CHR$(34) ' ' Y$ = GETKEY