home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
clarion
/
encrypt.zip
/
ENCRYPT.CLA
< prev
next >
Wrap
Text File
|
1990-02-04
|
6KB
|
181 lines
ENCRYPT PROGRAM
!=========================================================================!
! The following String Encryption Demo uses a Password to encrypt a string!
! by using the Bitwise eXclusive OR function (BXOR). Each character in the!
! Password String is used to set a mask value by which each character in !
! the Target String is XORed. This algorithm will cycle through the !
! Password String using a different character for each BXOR process. !
! Therefore, the longer the Password, the better the encryption. A second !
! XORing is used to make the Cipher Text appear nonrepeating. !
! !
! All ASCII characters are supported and the Password is case sensitive. !
! We use the same technique in our SECURITY LEM (written in Assembly). !
! This demonstration uses a Password of upto 30 characters. However, !
! passwords can be upto 255 characters in length. Memo fields of any !
! length can be processed by passing upto 255 characters at a time to !
! the Encipher()/Decipher() Functions. !
!-------------------------------------------------------------------------!
! Randy Goodhew !
! PROFESSIONAL TECHNOLOGIES CONSULTANTS !
! 508 Greenup Street !
! Covington, KY 41011 !
! Phone:(606)491-3020 !
! Fax:(606)491-0176 !
!=========================================================================!
REJECT_KEY EQUATE(279)
MAP
MODULE('CIPHER')
FUNC(Encipher),STRING
FUNC(Decipher),STRING
. .
Screen SCREEN PRE(Scr),HUE(7,1)
ROW(1,1) STRING('╔═{11}╤═{14}╗'),HUE(15,0)
ROW(2,1) REPEAT(3);STRING('║<0{11}>│<0{14}>║'),HUE(15,0) .
ROW(5,1) STRING('╚═{11}╧═{14}╝'),HUE(15,0)
ROW(1,29) STRING('╔═{50}╗'),ENH
ROW(2,29) REPEAT(3);STRING('║<0{50}>║'),ENH .
ROW(5,29) STRING('╚═{50}╝'),ENH
ROW(2,3) STRING('╔═╦═╦═╦═╕'),HUE(4,7)
ROW(3,3) STRING('╠═╝<0>║<0>║'),HUE(4,7)
ROW(4,3) STRING('╨<0{3}>╨<0>╚═╛'),HUE(4,7)
ROW(6,1) REPEAT(2);STRING('▒{80}') .
ROW(8,1) STRING('▒{17}╔═{44}╗▒{17}')
ROW(9,1) REPEAT(11);STRING('▒{17}║<0{44}>║<0,0>▒{15}') .
ROW(20,1) STRING('▒{17}╟─{44}╢<0,0>▒{15}')
ROW(21,1) STRING('▒{17}║<0{44}>║<0,0>▒{15}')
ROW(22,1) STRING('▒{17}╚═{44}╝<0,0>▒{15}')
ROW(23,1) STRING('▒{19}<0{46}>▒{15}')
ROW(24,1) STRING('▒{80}')
ROW(2,2) STRING(' '),HUE(4,7)
COL(12) STRING(' '),HUE(4,7)
COL(14) STRING(' PROFESSIONAL '),HUE(15,4)
ROW(3,2) STRING(' '),HUE(4,7)
COL(6) STRING(' '),HUE(4,7)
COL(8) STRING(' '),HUE(4,7)
COL(10) STRING(' '),HUE(4,7)
COL(14) STRING(' TECHNOLOGIES '),HUE(1,7)
COL(44) STRING('String Encryption Demo'),HUE(14,1)
ROW(4,2) STRING(' '),HUE(4,7)
COL(4) STRING(' '),HUE(4,7)
COL(8) STRING(' '),HUE(4,7)
COL(12) STRING(' '),HUE(4,7)
COL(15) STRING('CONSULTANTS'),ENH
ROW(9,64) STRING(' '),HUE(7,0)
ROW(10,64) STRING(' '),HUE(7,0)
ROW(11,64) STRING(' '),HUE(7,0)
ROW(12,64) STRING(' '),HUE(7,0)
ROW(13,64) STRING(' '),HUE(7,0)
ROW(14,20) STRING('CipherText:')
COL(64) STRING(' '),HUE(7,0)
ROW(15,25) STRING('Encipher Elapsed Time:')
COL(55) STRING('seconds')
COL(64) STRING(' '),HUE(7,0)
ROW(16,64) STRING(' '),HUE(7,0)
ROW(17,21) STRING('PlainText:')
COL(64) STRING(' '),HUE(7,0)
ROW(18,25) STRING('Decipher Elapsed Time:')
COL(55) STRING('seconds')
COL(64) STRING(' '),HUE(7,0)
ROW(19,64) STRING(' '),HUE(7,0)
ROW(20,64) STRING(' '),HUE(7,0)
ROW(21,34) STRING('Ctrl-Esc = Exit'),HUE(12,1)
COL(64) STRING(' '),HUE(7,0)
ROW(22,64) STRING(' '),HUE(7,0)
ROW(23,20) STRING(' {46}'),HUE(7,0)
ROW(25,1) STRING(' {25}'),HUE(1,7)
COL(56) STRING(' {25}'),HUE(1,7)
Ciphertext ROW(14,32) STRING(30),HUE(14,1)
Enciphertime ROW(15,48) STRING(@N6.2),HUE(14,1)
Plaintext ROW(17,32) STRING(30),HUE(14,1)
Deciphertime ROW(18,48) STRING(@N6.2),HUE(14,1)
Prompt ROW(25,26) STRING(30),HUE(1,7)
ROW(10,22) STRING('Password:')
COL(32) ENTRY(@S30),USE(G:password),HUE(14,1),SEL(1,7)
ROW(12,23) STRING('Message:')
COL(32) ENTRY(@S30),USE(G:message),HUE(14,1),SEL(1,7)
.
GROUP,PRE(G) !Global Variables Group
Password STRING(30)
Message STRING(30)
Start LONG
Stop LONG
END !group
CODE
SETHUE(7,0)
BLANK
SETHUE
OPEN(SCREEN) !Open the Screen
SETCURSOR !Turn off any Cursor
ALERT !Reset ALERTed Keys
ALERT(REJECT_KEY) !Alert Screen Reject Key
LOOP
LOOP WHILE KEYBOARD() !Clear Keyboard Buffer
ASK
END !loop
Scr:CipherText = '' !Erase Screen Variables
Scr:PlainText = '' !
Scr:EncipherTime = '' !
Scr:DecipherTime = '' !
ERASE !Erase USE Variables
Scr:Prompt = CENTER('Enter a Password',30) !Show Prompt
ACCEPT !Read Password
IF KEYCODE() = REJECT_KEY THEN BREAK. !Exit Program
Scr:Prompt = CENTER('Enter a String to be Encrypted',30)
ACCEPT !Read Message
G:Start = CLOCK()
Scr:CipherText = Encipher(G:Message,G:Password) !Encrypt Message
G:Stop = CLOCK()
Scr:EncipherTime = (G:Stop - G:Start) / 100
G:Start = CLOCK()
Scr:PlainText = Decipher(Scr:CipherText,G:Password) !Decrypt Message
G:Stop = CLOCK()
Scr:DecipherTime = (G:Stop - G:Start) / 100
Scr:Prompt = CENTER('Press any key to start over',30)
ASK !Pause for Key
SELECT(1) !Start over
END !loop
!--------- Special Screen Effect -------------------------
SETHUE(1,7,0)
row# = 13
col# = 37
rows# = 1
cols# = 8
frequency# = 500
LOOP 13 TIMES
COLOR(row#,col#,rows#,cols#)
row# -= 1
col# -= 3
rows# += 2
cols# += 6
LOOP 2 TIMES
frequency# += 25
BEEP(frequency#,8)
END !loop
END !loop
LOOP 26 TIMES
frequency# -= 25
BEEP(frequency#,8)
END !loop
BEEP(0,500)
SETHUE(7,0,0)
BLANK
SETHUE