home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / developmen / oplexamp / ENCRYPT.OPL < prev    next >
Text File  |  1992-08-26  |  1KB  |  66 lines

  1. REM ENCRYPT.OPL
  2.  
  3. PROC main:
  4.     GLOBAL passwrd$(8),passwrd&
  5.     LOCAL k%,ps%,pe%,le%,i%
  6.     LOCAL a1$(40),b1$(40)
  7.  
  8.     PRINT "input password"
  9.     INPUT passwrd$
  10.     le% = LEN(passwrd$)
  11.  
  12.     ps% = ADDR(passwrd&) - 1
  13.     i% = 1
  14.     DO
  15.         POKEB ps%+i%,PEEKB(pe%+i%)
  16.         i% = i% + 1
  17.     UNTIL i% > 4 or i% > le%
  18.  
  19.     DO
  20.         PRINT "input string"
  21.         INPUT a1$
  22.         RANDOMIZE passwrd&
  23.         b1$ = encrypt$:(a1$)
  24.         PRINT b1$
  25.         RANDOMIZE passwrd&
  26.         PRINT decrypt$:(b1$)
  27.     UNTIL a1$ = "x" REM k% = 600 or k% = 632 OR k% = 27 REM Psion-X or Psion-x or ESC
  28. ENDP
  29.  
  30. PROC encrypt$:(str$)
  31.     REM encrypt a string
  32.     LOCAL ans$(255),i%,ls%,pa%,c%,t%
  33.  
  34.     ls% = LEN(str$)
  35.     pa% = ADDR(ans$)
  36.     POKEB pa%,ls% REM first byte in string is length
  37.     i% = 1
  38.     DO
  39.         c% = ASC(RIGHT$(str$,ls%-i%+1)) - 64 + INT(RND*224)
  40.         t% = c% / 224
  41.         POKEB pa%+i%,c% - t%*224 + 32
  42.         i% = i% + 1
  43.     UNTIL i% > ls%
  44.  
  45.     RETURN ans$
  46. ENDP
  47.  
  48. PROC decrypt$:(str$)
  49.     REM encrypt a string
  50.     LOCAL ans$(255),i%,ls%,pa%,c%,t%
  51.  
  52.     ls% = LEN(str$)
  53.     pa% = ADDR(ans$)
  54.     POKEB pa%,ls% REM first byte in string is length
  55.  
  56.     i% = 1
  57.     DO
  58.         c% = ASC(RIGHT$(str$,ls%-i%+1)) + 224*3 - INT(RND*224)
  59.         t% = c% / 224
  60.         POKEB pa%+i%,c% - t%*224 + 32
  61.         i% = i% + 1
  62.     UNTIL i% > ls%
  63.  
  64.     RETURN ans$
  65. ENDP
  66.