home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR9 / PCRYPT80.ZIP / PC-CRYPT.DOC < prev    next >
Text File  |  1993-10-01  |  31KB  |  588 lines

  1.                                                              Cover
  2.                             PC-CRYPT
  3.  
  4.                 Data Encryption and Decryption Program
  5.       Version 8.0  1 October 1993  Supercedes all prior versions
  6.  
  7.                         Copyright 1993 by
  8.                         James T. Demberger
  9.                    9862 Lake Seminole Drive West
  10.                         Seminole, FL  34643
  11.                             813-397-2930
  12.                        CompuServe 74425,1642
  13.  
  14.      PC-CRYPT is NOT a public domain program.  The program and
  15. documentation for PC-CRYPT may be freely copied for archive or working
  16. copies as outlined in copyright regulations.  PC-CRYPT files as noted in
  17. the Miscellaneous Notes section may be made available thru clubs or user
  18. groups, program libraries or on remote access data bases or bulletin
  19. boards subject to the export restrictions outlined in the EXPORT WARNING
  20. section.
  21.  
  22.                              Disclaimer
  23.  
  24.      The PC-CRYPT program and associated documentation is provided on
  25. an "as is" basis without warranty of any kind, expressed or implied.
  26. Anyone using this software assumes all risks as to the quality and
  27. performance of the software.  The author disclaims all liability for
  28. any special, incidental, consequential, direct or indirect damages
  29. due to either proper and improper use of the program.
  30.  
  31.                           Table of Contents
  32.  
  33.             Introduction  - - - - - - - - - - - - - - 1
  34.             System Requirements - - - - - - - - - - - 1
  35.             Vernam Encryption - - - - - - - - - - - - 1
  36.             Functional Outline of PC-CRYPT  - - - - - 1
  37.                Keyword or Phrase Input  - - - - - - - 2
  38.                Random Number Generator  - - - - - - - 2
  39.                Keyfile Generation - - - - - - - - - - 2
  40.                Encryption and Decryption  - - - - - - 3
  41.                Using Keyfiles as One-Time-Pads  - - - 3
  42.             Running PC-CRYPT from Menu  - - - - - - - 4
  43.                Select Keyword or Phrase - - - - - - - 4
  44.                PC-CRYPT Menu  - - - - - - - - - - - - 5
  45.                Encrypt & Decrypt Test Strings - - - - 5
  46.                Processing Disk Files  - - - - - - - - 5
  47.             Running PC-CRYPT from Command Line  - - - 5
  48.             Transmitting Encrypt Files  - - - - - - - 6
  49.             Double Encryption - - - - - - - - - - - - 6
  50.             Keyword Security  - - - - - - - - - - - - 6
  51.             Are PC-CRYPT Encrypt Files Unbreakable? - 7
  52.             Customizing PC-CRYPT  - - - - - - - - - - 7
  53.             Basic Source Code for PC-CRYPT  - - - - - 8
  54.             Miscellaneous Notes - - - - - - - - - - - 9
  55.             EXPORT WARNING  - - - - - - - - - - - - - 9
  56.  
  57.                                                                  Page 1
  58.                             Introduction
  59.  
  60.      The PC-CRYPT software has four main functions:
  61.      a:  Demonstration of the Vernam encryption and decryption process.
  62.      b:  Outline operation of program and algorithms used by the program.
  63.      c:  Encryption and decryption of disk files using Vernam encryption
  64.          and decryption combined with use of random or O-T-P keyfiles.
  65.      d:  Provide Basic source code that can be run as is or that can be
  66.          modified to meet specific user requirements.
  67.  
  68.                          System Requirements
  69.  
  70.      The program requires an IBM computer or compatible running DOS with
  71. color or monochrome display and one or more disk drives.  File storage
  72. space must be available equal to twice the size of the largest file to
  73. be encrypt or decrypt.
  74.  
  75.                           Vernam Encryption
  76.  
  77.      In 1917, long before the age of electronic computers, Gilbert S.
  78. Vernam developed an encryption process for messages punched in paper
  79. tape using Baudot or five channel teletype code.  He used the
  80. electro-mechanical equivalent of a logical exclusive OR operation (XOR)
  81. on each character code in a message tape and a corresponding random
  82. character code in a key tape to produce a third tape with the encrypt
  83. message.  Decryption used the same process except that a tape with the
  84. encrypt message and a copy the key tape were XORed to produce the
  85. decrypt message.  PC-CRYPT uses essentially the same process to encrypt
  86. and decrypt disk files.  Each character in a clear text file is XORed
  87. with the corresponding character in a virtual key file of random
  88. eight-bit codes to produce a cipher text file. The program uses the same
  89. virtual key file to decrypt the cipher text file and produce a copy of
  90. the original clear text file.
  91.  
  92.      One problem with the original Vernam process related to the key
  93. tapes.  For a secure system, the characters in the key tapes had to be
  94. in random order and the number of characters in a key tape had to exceed
  95. the number of characters in the message to be encrypt.  A duplicate of
  96. key tapes had to furnished to anyone who needed to decrypt messages. The
  97. physical security of the miles of paper tape was another problem.
  98. PC-CRYPT can generate thousands of different virtual random keys with
  99. lengths of 14,457,349 bytes.  There is no need to store these virtual
  100. keys as a file since each of the virtual keys can be regenerated when
  101. required for decryption of cipher text files.
  102.  
  103.      The eXclusive OR function (XOR) performed by Vernam encryption and
  104. decryption used by PC-CRYPT is "blind" as to the data in the input file.
  105. Any input file is XORed to produce an output file.  If a clear text file
  106. is used as the input file, a cipher text output file is created.  If a
  107. cipher text file is used as the input file, a copy of the original clear
  108. text file is created.
  109.  
  110.                    Functional Outline of PC-CRYPT
  111.  
  112.      The following four sections outline the functional operation of
  113. PC-CRYPT.  The Basic source code for the program is in the file
  114. PC-CRYPT.BAS.  A reasonably proficient programmer, using this text and
  115. the Basic source code, should be able to write a program in Basic,
  116. Pascal, C or some other high level language that would have the same
  117. functionality as PC-CRYPT.
  118.  
  119.                                                                  Page 2
  120.                        Keyword or Phrase Input
  121.  
  122.      PC-CRYPT uses a keyword input routine to read a keyword or phrase
  123. that may be up to 50 characters in length.  The number of characters
  124. required for the keyword or phrase is relative to number of hexadecimal
  125. characters 0 thru 9 and A thru F (either lower or upper case) that are
  126. entered.  Other alphabetic and special characters are ignored.  The
  127. keyword input code treats the first eight hexadecimal characters entered
  128. as four hexadecimal numeric pairs with this minor exception - no
  129. duplication of any of the first three pairs is permitted.  An error
  130. message will be displayed if a duplicate pair is found and you will be
  131. prompted to re-enter the keyword or phrase.
  132.  
  133.      The first three pairs of hexadecimal characters are used to set the
  134. decimal values for the pointers used for key file generation and the
  135. fourth pair is used to set a value for a seed for the random number
  136. generator.  The MOD function is used to reduce the maximum value for the
  137. pointers to 239 for the first pointer, to 241 for the second pointer and
  138. to 251 for the third pointer.  The value for the seed for the random
  139. number generator ranges from 0 to 255.  Due to the use of the MOD
  140. function, certain hexadecimal characters above EF for one pointer value
  141. may result in a duplication of the pointer value for another pointer
  142. that has a value from 00 to 0F.  This duplication will result in the
  143. error message mentioned in the previous paragraph.
  144.  
  145.      Since the keyword input code accepts but ignores characters other
  146. than hexadecimal characters, use of other than hexadecimal characters
  147. for the keyword or phrase can be used to "hide" the characters actually
  148. used as pointer values.  For example, "SSN 123-45-6789" (= HEX 12 34 56
  149. 78) and "The 15 pound fat cat is hungry" (= HEX e1 5d fa ca) are
  150. accepted as a valid keywords or phrases.
  151.  
  152.                        Random Number Generator
  153.  
  154.      The random number generator used by PC-CRYPT is a pseudo random
  155. number generator that will create an array or string of 256 random
  156. numbers.  A unique array is created for each of the seed numbers from 0
  157. to 255.  The random numbers in each array range in value from 0 to 255
  158. with only one occurrence of each of the numbers in each array.  PC-CRYPT
  159. uses the 256 numbers in the array in "as generated" order however a
  160. production version of the program might reverse the order of the 256
  161. numbers or make some other transformation that will "customize" the
  162. encryption pattern.
  163.  
  164.     Since this pseudo random generator uses only integer values for
  165. input and output, there is no precision problem such as would occur with
  166. random number generators that have fractional numbers as output.  The
  167. compiled 8086/8088 machine code in a PC-CRYPT executable file works the
  168. same way and produces the same random array for the same seed number
  169. when run on a any computer system using a 80X86/88 processor.
  170.  
  171.                        Key file Generation
  172.  
  173.      PC-CRYPT creates virtual random keyfiles.  Each character of a key
  174. file is generated as required using three numbers from an array or list
  175. of 256 random numbers.  Each of the virtual keyfiles may be as long as
  176. 14,457,349 bytes.  The length is the result of recycling the random
  177. numbers in the random number array using three nested loops with
  178. counters that are reset to 1 after 239, 241 or 251 cycles.  You might
  179. note that 14,457,349 is the least common multiple of the three prime
  180. numbers 239, 241 and 251.
  181.  
  182.                                                                  Page 3
  183.  
  184.      The initial counter or pointer settings are determined by three
  185. values calculated from the keyword.  Key file generation start at the
  186. three random numbers pointed to by the initial pointer values.  Since
  187. each of the initial pointer values in effect defines a different virtual
  188. key file, there are almost 14,457,349 potential keyfiles.  Almost since
  189. there are 239 + 239 hexadecimal values for the first and second pairs
  190. that can not be used with the same value for the second or third pairs
  191. and 2 values for the second pair that can not be used with the same
  192. value for the third pair.
  193.  
  194.      A key character is a random number resulting from the XOR operation
  195. on the three random numbers in the random number array pointed to by the
  196. current value of the three pointers.  If we were to assume that the
  197. random number in the first position of the random number array was a
  198. zero and that initial setting of each of the three array pointers was 1,
  199. the XOR value of the key character would be a "natural" zero (as
  200. compared to a "calculated" zero that results from 1 XOR 2 XOR 3).
  201. Assuming further that there was no other occurrence of a zero in the
  202. random number array, the next "natural" zero (as opposed to a
  203. "calculated" zero) will not occur until the recycling pointer values are
  204. simultaneously reset to a value of 1.  Key characters with "calculated"
  205. zero value will probably occur at random intervals during the key file
  206. generation.
  207.  
  208.      Again assuming that the initial values of the three pointers was 1,
  209. the pointer values will simultaneously return to 1 when the first
  210. pointer value has recycled thru the random number array 60,491 times,
  211. the second pointer value has recycled 59,989 times and the third pointer
  212. has recycled 57,599 times.  This will occur after 14,457,349 key
  213. characters have been generated if the length of the clear text file is
  214. 14,457,349 bytes or longer in length.
  215.  
  216.                     Encryption and Decryption
  217.  
  218.      Binary file input/output statements are used to read the clear or
  219. cipher text input files and to write the cipher or clear text output
  220. files.  The method used by PC-CRYPT reads sequential 512 byte blocks
  221. into a character string array and creates the encrypt or decrypt text in
  222. another 512 byte character string array.  If the length of the input
  223. file is not a multiple of 512, a "short" or partial block is processed
  224. as the last block.  Each sequential character of an input block is XORed
  225. with the next sequential key character from the virtual key file to
  226. produce the corresponding sequential character in the output string.
  227.  
  228.                  Using Keyfiles as One-Time-Pads
  229.  
  230.      One-Time-Pad (OTP) encryption systems are considered unbreakable. A
  231. virtual key file generated by PC-CRYPT is in effect a OTP so long as the
  232. keyword or phrase used to generate the key file is never reused.
  233. Changing just one out of the four hex character by incrementing it by
  234. one on a daily basis will provide enough different keywords to last for
  235. more then eight months.
  236.  
  237.      If your only interest is in files of random numbers for use as
  238. OTPs, PC-CRYPT can be used to generate these files.  A "nothing" file
  239. consisting of a character string of the hexadecimal value 00 when
  240. encrypt using any keyword or phrase will generate a file of the random
  241. characters with decimal codes from 0 to 255.  The file NULL.ZIP that is
  242.  
  243.                                                                 Page 4
  244.  
  245. included with the other PC-CRYPT files can be unZIPped to the "nothing"
  246. file NULL.1MB that is a string of 1,024,000 characters each with a
  247. hexadecimal value of 00.   If you have the hard drive space, you can
  248. concatenate 15 of the million byte files and encrypt the 15 million byte
  249. OTP file to verify that the first 239 bytes of the encrypt file are
  250. repeated starting at the 14,457,350th position of the of the file. These
  251. 239 bytes in the same sequence do not appear anywhere prior to this
  252. position however shorter sequences from these 239 bytes may be found
  253. before the 14,457,350th position.
  254.  
  255.                        Running PC-CRYPT from Menu
  256.  
  257.      From DOS ready key [dr:][\path\]PC-CRYPT then press the Enter key.
  258.  
  259.      A default option is shown for the response to some of the prompts
  260. displayed by the program.  As an example, a prompt for a yes or no
  261. response will display "y/N".  Press Enter to take the no default option
  262. indicated by the upper case N.  Either a lower case y or an upper case Y
  263. must be pressed for the yes response.  If only lower case options or no
  264. option is shown, an entry other than the Enter key must be used.
  265.  
  266.      The first screen displayed by the program is the menu for keyword
  267. or phrase input.  This screen is also displayed as one of the options
  268. from the main menu.
  269.  
  270.                      Select Keyword or Phrase
  271.  
  272.             Press Enter for No visible display of Keyword OR
  273.             Press K for a visible display of Keyword only OR
  274.             Press D for display of pointers and random numbers
  275.  
  276. Old Keyword is
  277.  
  278. Enter new Keyword or phrase
  279.  
  280.                      Press any key to continue _
  281.  
  282.      Press the Enter key for the no visible display of the keyword as it
  283. is being entered if you don't want someone looking over your shoulder to
  284. see the keyword.  Press the K key to display both the currently selected
  285. keyword and the new keyword being entered.  An error message will be
  286. displayed if an entered keyword or phrase does not have at least eight
  287. hexadecimal characters and there is a duplication among the first three
  288. hexadecimal pairs.
  289.  
  290.      Press the D key for a visible display of the keywords and a display
  291. of the hexadecimal and the decimal values for the loop pointers and
  292. random number seed and the numbers in the random number array. The 256
  293. random numbers generated using the seed for the random number generator
  294. are displayed on the next 13 lines.
  295.  
  296.                                                                 Page 5
  297.                        PC-CRYPT MENU
  298.  
  299.                K  Select Keyword or Phrase
  300.                T  Turn Timer On/Off
  301.                S  Encrypt & Decrypt Test Strings
  302.                F  Process Disk Files
  303.                S  Shell to DOS
  304.                X  Exit/End Program
  305.  
  306.                    Enter Option Letter _
  307.  
  308.      Press K for the Select Keyword option if you wish to change the
  309. keyword originally entered during the initial Select Keyword display.
  310.  
  311.      Press T for a prompt to turn on or off a timer that will total
  312. number of characters encrypt or decrypt and the total time required. The
  313. total time is for encryption or decryption only and does not include
  314. time for reading and writing files.  The program uses these totals to
  315. compute and display the thruput in characters per second. Timing is
  316. accurate to approximately 1/18th of a second or +/- 555 characters if
  317. the number of characters per second is around 10,000.  Timings are not
  318. displayed unless the total time is more than approximately 1/6 of a
  319. second.
  320.  
  321.                 Encrypt & Decrypt Test Strings
  322.  
  323.      The Encrypt & Decrypt Test Strings option displays a submenu from
  324. which you may select four different types of character strings for
  325. encryption and decryption.  The clear text, cipher text and decrypt text
  326. strings are displayed.  This option is primarily used to look at the
  327. pattern of characters produced when you encrypt strings of upper case,
  328. lower case and numeric characters.  Key board input of test records
  329. accepts ASCII codes entered with the Alt key and numeric keys. In some
  330. cases, a character may be encrypt as the same character. This is not an
  331. error; it demonstrates that the XOR function is really working as it
  332. should.  Encryption may result in the generation of the hexadecimal code
  333. 07 (Bell code) in which case you will hear a beep when the encrypt text
  334. is displayed.
  335.  
  336.                          Process Disk Files
  337.  
  338.      When you select this option the following prompts and message will
  339. be displayed:
  340.  
  341.            Enter Input  [dr:][\path\]filename.ext
  342.  
  343.            Enter Output [dr:][\path\]filename.ext
  344.  
  345.               Processing                bytes
  346.  
  347.      A running total is displayed as each 512 bytes of a file are
  348. processed.  Total processing time and bytes per second is displayed if
  349. the timer option has been turned on.  The output file will replace or
  350. overlay any file with the same name and extension.
  351.  
  352.                 Running PC-CRYPT from Command Line
  353.  
  354.       If your only need is to encrypt or to decrypt existing files,
  355. PC-CRYPT may be run from the DOS command line by entering the keyword,
  356. the input filename and the output filename.  A command line example
  357. follows:
  358.  
  359.                                                                 Page 6
  360.  
  361. PC-CRYPT /KW=keyword /FI=dr:\path\fname.ext /FO=dr:\path\fname.ext
  362.  
  363.       The command line parameters must be entered in the order shown;
  364. /KW=keyword, /FI=filename for the clear text file to be encrypt or the
  365. cipher text file to be decrypt, and /FO=filename for the encrypt cipher
  366. text file or the decrypt clear text file.  Should there be an error in
  367. the command line parameters, i.e. /F0 instead of /FO or a file "not
  368. found" for the input filename, an error message will be displayed that
  369. will permit canceling the run or to resuming using the menu interface.
  370.  
  371.                        Transmitting Encrypt Files
  372.  
  373.      An encrypt data file may be sent to another system for decryption
  374. using a communications link or as a disk file.  Since encrypt data files
  375. may contain character strings corresponding to transmission control
  376. codes, encrypt files should be transmitted as eight bit binary files
  377. using XMODEM or some equivalent transmission protocol for binary files.
  378. File compression utilities will only compress encrypt or cipher text
  379. files by a very small percentage.
  380.  
  381.                            Double Encryption
  382.  
  383.      The cipher text produced with PC-CRYPT is probably unbreakable.
  384. However there is the possibility that a sufficiently fast and powerful
  385. computer using an automated brute force decryption system combined with
  386. some technique for clear text recognition might permit the decryption of
  387. a file.  Double encryption can be implemented by encrypting a cipher
  388. text file a second time with a keyword different from that used for the
  389. first encryption.  The same two keywords must be used to decrypt the
  390. double encrypt data.  Use of any text recognition method is defeated by
  391. double encryption since there is no way to determine which of the many
  392. files produced by any attempt at decryption is really the target cipher
  393. file rather than a file of computer generated "garbage".
  394.  
  395.       As an alternative to using two passes for double encryption, the
  396. program could be modified to use two different keywords simultaneously.
  397. The XORed character output from the first keyword would be XORed with
  398. the key character generated from the second keyword.
  399.  
  400.      A much simpler double encryption system is possible thru the use of
  401. password protected compressed files.  The widely used PKZIP/PKUNZIP
  402. compression utility programs can be used to compress or decompress
  403. PC-CRYPT encrypt files.  The documentation for PKZIP estimates the time
  404. to "hack" an eight character (A thru Z) PKZIP password to be 241 days
  405. assuming 10,000 tests per second.  If the assumption is made that
  406. hacking uses some form of text recognition to identify a possible
  407. password, hacking will fail since there is nothing other than random
  408. characters in the cipher text files produced by PC-CRYPT.
  409.  
  410.                        Keyword Security
  411.  
  412.      The security of keywords or phrases is the most important factor in
  413. the use of private key encryption systems.  In the case of PC-CRYPT,
  414. there is nothing secure about the form of a keyword - it is always four
  415. pairs of hexadecimal characters.  Since actual keywords can be "hidden"
  416. in a list of names and Social Security numbers or as the date that a
  417. file was created, there is no need to write a single keyword or list of
  418. keywords in eight character hexadecimal format that can be recognized as
  419. keywords or phrases.
  420.  
  421.                                                                 Page 7
  422.  
  423.      There are many different method for distribution of keywords
  424. depending on the number of users that require knowledge of the keywords.
  425. Lists of "hidden" keywords for use by different users can be distributed
  426. by means of an encrypt file; the keyword or phrase for this file may be
  427. furnished each user by any secure method.  I'll leave how to handle the
  428. distribution of the initial keyword up to to those who are going to make
  429. use of PC-CRYPT.
  430.  
  431.                   Are PC-CRYPT Encrypt Files Unbreakable?
  432.  
  433.      The algorithm used by the pseudo random number generator and the
  434. method used to generate the 14,457,349 byte pseudo random keyfiles in
  435. PC-CRYPT are public knowledge.  A PC-CRYPT cipher text file is breakable
  436. only in the sense that it is known that one of the 3,701,081,344
  437. possible keywords will decrypt the file.  Any brute force "try every
  438. possible keyword" attempt to break a double encrypt file will produce
  439. millions of files of which none can be recognized as the "broken" cipher
  440. text file.
  441.  
  442.      Neither the array of 256 numbers used by the program nor the
  443. 14,457,349 byte keyfiles are truly random since two or more copies of
  444. the same compiled PC-CRYPT program will produce the same array of 256
  445. numbers and the same key file when the same keyword is used.  A cipher
  446. text file produced by the program is truly random so long as the clear
  447. text is not known.  A clear text file known to have long strings of the
  448. space character or repeated strings of text will not produce any
  449. discernible pattern of characters in the cipher text file.  In those
  450. cases where there is a need to encrypt a file longer than 14,457,349
  451. bytes in length, there will be nothing discernible in the cipher text
  452. file to indicate the actual point where the key file is recycled.
  453.  
  454.      Cipher text files produced with Vernam encryption using a random
  455. key file with a length equal to or greater that the clear text to be
  456. encrypt are considered to unbreakable unless the key file is known.
  457. Cipher text files produced using a random One-Time-Pad key file for
  458. encryption are considered to be unbreakable so long as the random
  459. One-Time-Pad file is not reused.  The cipher text files produced by the
  460. PC-CRYPT program meet the conditions required to be considered to be
  461. unbreakable for both Vernam and One-Time-Pad encryption.
  462.  
  463.                       Customizing PC-CRYPT
  464.  
  465.      Many users will prefer to use a customized variation of the program
  466. and to limit the distribution of the customized program to only
  467. "authorized" users.  The method PC-CRYPT uses to generate a specific set
  468. of random codes and to set the points where encryption and decryption
  469. starts using the random codes permits the creation of thousands of
  470. different "customized" variations.
  471.  
  472.      There are 24 major variations based on the way that PC-CRYPT uses
  473. the four hexadecimal pairs to set the initial pointer values and the
  474. seed for the random number generator.  The first 3 pairs are used for
  475. initial pointer values in 1, 2, 3 order while the 4th pair is used for
  476. the random number seed.  The pairs can be used in any order, e.i. 4, 3,
  477. 2, 1.  With 24 different sequences available, any single keyword can
  478. lead to any of 24 different encryption patterns.
  479.  
  480.                                                                 Page 8
  481.  
  482.      There are 256 random numbers is the random array used by the
  483. program however only the first 239 numbers are used by the first pointer
  484. loop, 241 numbers by the second loop and 251 by the third loop.  All of
  485. the pointers are reset to 1 when the have been incremented to their
  486. maximum values. In the case of the first pointer, the maximum value
  487. could be set to 256 and reset to 18 while still providing 239 random
  488. numbers.  The second and third pointers can be set to a maximum value of
  489. 256 and reset to 16 and 6 provide 241 and 251 random numbers
  490. respectively.  There are 18 sets of maximum values and reset values
  491. available for the first pointer, 16 for the second and 6 for the third
  492. pointer.  These sets of values when combined with the 24 sequences of
  493. random pair assignments will provide 24*18*16*6 or 41,472 different
  494. variations of the PC-CRYPT program.
  495.  
  496.      The number of different variations of PC-CRYPT can be double by
  497. reversing the order in which the array of 256 random numbers used for
  498. key file generation are stored.  These random numbers are stored as
  499. generated in order from 1 to 256; a change in one statement in the
  500. program will store the numbers in reverse order from 256 down to 1.
  501.  
  502.      The first use that should be made of any variation of PC-CRYPT that
  503. you plan to use for actual encryption of sensitive data files should be
  504. the encryption of the Basic source code file and any compiled executable
  505. files for that variation.  The security of the keyword or phrase used to
  506. encrypt the source and compiled code files is even more important than
  507. the security of the keywords or phrases that will be used to encrypt
  508. other sensitive data files.
  509.  
  510.                      Basic Code for PC-CRYPT
  511.  
  512.      The Basic source code for PC-CRYPT is in the file PC-CRYPT.BAS.
  513. This source code file has statement lines for Power BASIC version 3.0
  514. (PB) and for Quick BASIC version 4.5 and QBASIC (QB).  The only
  515. differences between these two BASIC dialects in so far as the program is
  516. concerned are in the statements for the binary file input and output and
  517. the fact that Command Line operation is not possible with QBASIC. The
  518. PC-CRYPT.EXE file furnished with this software package was compiled with
  519. Power BASIC version 3.0c.  An EXE file compiled with Quick BASIC version
  520. 4.5 may run 1 or 2 percent faster than the Power BASIC EXE file however
  521. the PB EXE file is much smaller (44,106 KB) than the QB EXE file (57,460
  522. KB).
  523.  
  524.      All statement lines peculiar either to PB or to QB have a REM PB or
  525. REM QB comment at character position 60 (+/-).  The source code file
  526. will run as is under QB since the REM PB statements have a REM at the
  527. beginning of the each of the REM PB statements.  If you want to run or
  528. compile the source code using Power Basic, make a copy of PC-CRYPT.BAS
  529. and rename the copy to PB-CRYPT.BAS.  Edit the PB copy to add a REM at
  530. the beginning of each statement that has a REM QB and delete the REM
  531. found at the beginning of each REM PB statement before you run or
  532. compile the PB version.
  533.  
  534.      The BASIC source code has been re-written over the years starting
  535. with interpreted BASIC for the Radio Shack TRS-80 and for the original
  536. IBM PC.  For the most part, changes to the source were made only when
  537. and where required to run or compile the code for newer versions of the
  538. IBM, MicroSoft compilers and for Power BASIC.
  539.  
  540.                                                                 Page 9
  541.  
  542.      The program is written in unstructured "spaghetti" Basic code.  The
  543. variable names and labels are rather cryptic.  No attempt has been made
  544. to "prettify" the code.  Minimal error checking is used only where
  545. required to ensure proper input to the program.
  546.  
  547.                         Miscellaneous Notes
  548.  
  549.       Cipher text files produced with Versions 6.0 and 7.0 of PC-CRYPT
  550. use the same random number generator and XOR processing as Version 8.0
  551. of PC-CRYPT however the keyword input processing is entirely different.
  552. Any archive type files encrypt with Version 6 or 7 should be decrypt and
  553. then re-encrypt with Version 8.
  554.  
  555.      No registration or license is required for personal or commercial
  556. use of the PC-CRYPT program or for derivative versions of the program.
  557. Any comments regarding the PC-CRYPT program and any methods that might
  558. be used to "break" encrypt files will be appreciated.  The comments can
  559. be mailed to the address on the cover page or EMailed thru CompuServe.
  560.  
  561.       Files included in both CRYP8USA.ZIP and CRYP8EXP.ZIP file:
  562.       FILE_ID  DIZ       --- 10-01-93   8:00a  Description CRYP*.ZIP
  563.       NULL     ZIP      1122 10-01-93   8:00a  NULL.1MB File
  564.       PC-CRYPT DOC     31394 10-01-93   8:00a  PC-CRYPT V8 Documentation
  565.       PC-CRYPT EXE     44106 10-01-93   8:00a  PC-CRYPT.EXE (PowerBASIC)
  566.  
  567.       A license by the Department of State is required for export of the
  568.       encryption source code.  The source code file PC-CRYPT.BAS is
  569.       included in the CRYP8USA.ZIP file and not in the CRYP8EXP.ZIP file.
  570.       Do not copy or distribute this source code file in any situation
  571.       where there is a possibility that export restrictions would apply
  572.       (see following EXPORT WARNING).
  573.       PC-CRYPT BAS     14909 10-01-93   8:00a  BASIC Source (QuickBASIC)
  574.  
  575.                             EXPORT WARNING
  576.  
  577.       Federal Government regulations require a valid Department of State
  578. license for the export of cryptographic source code.  These regulations
  579. are applicable to the PC-CRYPT.BAS source code file; regulations do not
  580. prohibit the export of the executable compiled code in the PC-CRYPT.EXE
  581. file.  Any individual or activity, such as a bulletin board system or an
  582. "information provider" such a CompuServe, etc., that makes the source
  583. code available for download to anyone accessing the system from a foriegn
  584. country might be considered by the Department of State to be an exporter
  585. of the source code.
  586.  
  587.  
  588.