home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / FORTRAN / CODE3_4.ZIP / PCCODE4.FOR < prev    next >
Encoding:
Text File  |  1986-12-01  |  16.2 KB  |  229 lines

  1. $NODEBUG
  2. $NOFLOATCALLS
  3. $STRICT
  4. $PAGE
  5.       PROGRAM PCCODE4
  6. C
  7. C     ********************************************************
  8. C     *                                                      *
  9. C     *     PC-CODE4 PORTABLE CRYPTOGRAPHY        v6.2       *
  10. C     *     (C) COPYRIGHT RICHARD NOLEN COLVARD   Apr-86     *
  11. C     *         COMMERCIAL RIGHTS RESERVED                   *
  12. C     *                                                      *
  13. C     *         MICROSOFT MS FORTRAN V3.30                   *
  14. C     *                                                      *
  15. C     ********************************************************
  16. C
  17.       INTEGER*2   IERR,ILOW,IHIGH,NKEYS,J,K,M,IFREQ,RECNUM
  18.       INTEGER*2   RANGE,RESULT,RANGE2,IA,IR,ISEC,SIZE99,RECN2
  19.       INTEGER*2   JEOF
  20.       INTEGER*4   KEYS(999),HASHER,JHASH
  21.       CHARACTER*1 IYES,ITRANS,IHDR,IHASH,TEXT(512)
  22.       CHARACTER*1 ICODE,IKEY,IINP,IOUT,TEMP(72)
  23.       CHARACTER*21 VERSION,VERS,FILLER*10
  24. C     CHARACTER*16 TEOF
  25. C     CHARACTER*16 ZEOF
  26. C
  27. C
  28.       PARAMETER (SIZE99=512)
  29. C
  30. C
  31. C     EQUIVALENCE (TEXT(1),TEOF)
  32.       DATA RECNUM / 1 /, RECN2 / 1 /
  33.       DATA IERR / 0 /, JEOF / 0 /
  34.       DATA TEXT / 512 * ' '/
  35.       DATA KEYS / 999 * 0 /
  36.       DATA HASHER / 0 /
  37.       DATA VERSION / '$PC-CODE4 V6.2 APR-86' /
  38. C     DATA ZEOF / '/*END-OF-FILE*/ '/
  39. C
  40. C
  41.    5  FORMAT(1X)
  42.    6  FORMAT(1X,/)
  43.       WRITE(*,6)
  44.       WRITE(*,10)
  45.   10  FORMAT(10X,'PC-CODE4  PORTABLE CRYPTO-SYSTEM  v6.2B',//)
  46.   20  FORMAT(10X,'(c) Copyright R. Nolen COLVARD Company 1986')
  47.   22  FORMAT(10X,'    Commercial Rights Reserved')
  48.   24  FORMAT(10X,'(c) Copyright Microsoft Corp 1985')
  49.   26  FORMAT(10X,'    Microsoft FORTRAN-77 V3.30'//)
  50.       WRITE(*,20)
  51.       WRITE(*,22)
  52.       WRITE(*,24)
  53.       WRITE(*,26)
  54. C
  55. C
  56.       OPEN(9,FILE='CONFIG.PC3',FORM='FORMATTED',ACCESS='SEQUENTIAL',
  57.      +       STATUS='OLD',IOSTAT=IERR)
  58. C
  59. C
  60.   30  FORMAT(5X,'*** PROBLEM MI2-E='CONIA,FORM='FORMATTED',ACCESS='SEQUEN 1985')
  61. *******Mr  ACTeEYS(*,22(oft Corp 1S +       STAT*** len COLVARD Company 2      TER*1 ICODo
  62.       uXT(512)JEOF /M-vs   uXT(512)JEOF /M-vs   u FORMATTo',ACC     WbC0)
  63.   10  FORMAT(10X,'PC-CODE4v,t20)
  64.       WRITE(*,,ACCESS=N(10X,nPï    *,20eaECNUr╤uTTo',uhiF:$NODCTeEYS(*,22(oft Corp 1S +       STAT*CC0)
  65. l2ngCOLVAR
  66. LFORMATToECNUr╤orp 1N>ACC   )r0eaECNUr╤uTTo',uhiF:$NODCTeEEOF c,M-vs   u FORMATTo',ACC     WbC0)
  67.   10  FORMAT(10X,'PC-CODE4v,t20)
  68.       WRITE(*,,ACCESS=N(10X,nPï    *,20eaECNUr╤uTTo',uhiF:$NODCTeEYS(*,22(ofmA IERR / 0"ER*2  (TERu,,A='OLD',IOSEQUEN WRIpN / '$PC-bC0)ODE4 ,ACCkS1S DATA KEYS / 999 * 0 /
  69.       DATA HASHEO4A u    rp F985')
  70.   26  FORMAT-FILLATAAo Coml 6  FO2p 1NHn-a HASHEe/
  71. CODE4 PORTABSau    rp sba    *,20|]p Fe.bCc,ACC20|]p Fe.hFILRAN rP')
  72.   26  FORMAT-FILLATAAo ComnbiYr╤uTToWPC-COM MI2-E=l6LV*
  73. C     *     (C) COPYRIG99 C     sD7o   DATA RECKAn9a,A= N EATo',Ahts Ms0)ODE4 ANGE2,IA,IR4ShsErh SRWRIomE    sDiiu CRMAna HASHEe/,ACCk1N / '$R4SC,HASHEe/Gm)mnbiYr╤uTToWPC-COM MI2-E=lvh                                            *
  74. C     *     PC- MIETE(*l4M$
  75. C bgAhts Ms0)ODE4 ANGE2,IG.PVa ON0)O8iRinbiY   nrEuuu9>ACDLFORMA4o⌠aL
  76. C  CO12 nONe/,HmWbC0√n  * ' '/
  77.       DL$NODC$
  78. C bg9(9,FILE
  79.     i
  80. C ***╒S DATA KEYS / 999 * 0 /
  81. 7o',uhiFwie   IER9 u3i.Ruu9HASuS&5in  COIfs/
  82. ORMCOD$NODC$
  83. C bg9(9,FILE
  84.     i
  85. C ***╒S DATA KEYS / 999 * 0 /
  86. 7o',uhiFwie   IER9 u3i.Ruu9HASuS&5in  COIfs/
  87. ORMCOD$NODC$
  88. C bg9(9,FILE
  89.     i
  90. C ***╒S DATA KEYS / 999 * 0 /
  91. APE
  92.     SASu2)
  93.    D3TA T22 (*,22(oft CTnNODC$
  94. C b    IhXrs1w"iiC i
  95. C *[┌I uw7
  96. ORMCOD$*
  97. C     * AN┐*****Isp/G f\ ODC$
  98. hts Ms t r0 /
  99.  ht╖h* 0 /***TA 6UncZ A NODC$OIfs/aD*       NTA KEY,uhINo'CONFIG.PC3',FORM='FORMATTEDaILE='CYS,J,K,MnfaD*    eC0i 9(9,FILE
  100.     i
  101. C ***TAaENN 10OUT,TeA d0 /***T*****A 6UnvLondthEYS / **TAORMATTORMATTORMAcvs   uIG.PC3',FORM∙hRMCOD$NO1****A▀4cA▀thET,TeA4S1k.FIN   OUT7o',Eh* 0 *IAMETER (SIZEODC$
  102.    i
  103. C ***ctiET,TeA4OUT,TeA A TeS1C  i
  104. Ct3éPnLD',IOSTAT=IERR)ASHE K,M sba    *,20bHTeA A vLo T2ce  v6.2B: OUT,TeAIHDR,        ,aAMETER ERu,'A Te  6 A50EhSS=N(10X,,'A TebhSSS    *,20|]p Fe.bt A _e(TE(u* 0 /***Tc sbeNCEhSSffATToEC K$NODa 5 a1,m bg9(9,slIGfsDaN WRIOLFORMA4YPTOGRAk.FIN  [==   OUT7oa 5 a1,m bg9(9,slIGfsDaN WRIOLFORMA4YPTOGRAk.FIHARACTER*16 TEOFp* 'oT **OUT7o   DAT           WuEo⌠aL
  105. C1S DATA╡OD$ok FORMAT(10X,'PC59(9,FRsl 6  *  1k.FIN,slRii =4u r1),SFIN   O ¢n_e(TE(NCuau(10X,     (GHT RICbu3SLFORMA4YPTOGRAk.FIN  [tFORMATPdrPr
  106. Cuu9Hin  C    i
  107.  19  eαuRLE
  108. ) RCuau(102, nsoft FON DATA6 Tn╤oraN  O ¢n_e(TE(NCuau(10X, 
  109.   IS,IHDwg9[kp=  r    Y,uhIm'C FOr    Y,uh       aoG. (GHT RIanN    OC)p≤ sbª      l+1l+AIHDR,        ,aAkE[         g ooEC KT     g T )
  110.  
  111.   IS,IHDwg9[kp=  *1 ICODC     (GHT RI0   gM38*Hal  IS,IHDwg9[kIS,Il4KAaooEC KT     g T )
  112.  
  113.   IS,16 TEOF
  114. C     CHARACTER*16 ZEOF
  115. C
  116. C
  117.       PARAMETER (SIZE99=512)
  118. C
  119. C
  120. C     EQUIVALENCE (TEXT(1),TEOF)
  121.       DATA RECNUM / 1 /, RECN2 / 1 /
  122.       DATA IERR / 0 /, JEOF / 0 /
  123.       DATA TEXT / 512 * ' '/
  124.       DATA KEYS / 999 * 0 /
  125.       DATA HASHER / 0 /RlkCN2 / 1 /
  126. Eoeuu9>ACDLFORNODC$T /D>ACE4aA≤D>A( DATA KEYS / 9eRCuauc 1 /, RECcbg RECNHARACTER*1iC K$NOD6nCNUr╤orp
  127.   I
  128. "da, bg   PORTABLE CRYrpaF0$ONe/Cp sbNODC$LRTA 0nrP4K"DLFORNODC$P4K"DLFORNODC$ 1 NODC$ 1 NODC$ k  gl(ieIZE9B,T )
  129.  ET   aLAaooEC KM / 1 W1 KEYS / 999 * 0 T   aLA
  130.  ┬T9(9nouPcC5CuaurAaooEC K DAiEEEEEEiEEEEEEiK TERi4KN⌠ t[ñ      *
  131. C     *  NUr╤uTTo',9(9n9En9b.DE4NFORMATTo'9eRCuauc 1 /, RECcbg RECNHARACTER*1iC K$NOD6T  ╟CE (TETETETETETETETETO *
  132. C  m- aLAiEEEEfIS,IHDwg9[kIS,IHDwg9T  ╟CEeCD3Y        v6.2       *
  133. C     *     (Cñ 'TERu,uTTo',9(9n9En9b.DE4NFORMATTo'9eRCuauc 1 /, RECcbg RECNHARACTER*1iC K$NOD6T  ╟CE (TETETETETETETETETO *
  134. C  m- aLAiEEEEfIS,IHDwg9[kIS,IHDwg9T  ╟CEeCD3Y        v6.2       *
  135. C     *     (Cñ 'TERu,uTTo',9(9n9En9b.DE4NFORMATTo'9eRCuauc 1 /, RECcbg RECNHARACTER*r(Dwg9[ki sbkS='OLD',IOSTAT=IERR)
  136. C
  137. C
  138.   30  FORMAT(5X,'*** PR r╤uTTuTToWP1no2 / 1 /
  139. AT(5X,SNO¿lmRn, RR    bONe/Cp79 *Oo / E**     *e NO¿ß)FOR
  140. C
  141.    Ti7S,IHDwg9   g T )t12 * 'iEEEEiEEEEfI WRIOLFORMA4Y      NTA En9EfI W/ E**  O1S1k.FIN   OUT7o'iW4s/
  142. ORMCwNF W/ E*F╟CE,.f"M COM MI2    OC)p≤ sbª      l+1l+AIHDR,        ,aAkE[         g ooEC KT     g T )
  143.  
  144.   IS,IHDwg9Dwg9[ki sbkS='OaA≤B)
  145.   ',9(9g              o /        ,aAkE[         g :CDR,r    Y,uhImteNO0IToWP1no2 / 1 /
  146. ATIS,IHDwgeC KT     g T )
  147.  
  148.   IS,IHDwg9Dwg9[ki sbkS='OaA≤B)
  149.   ',9(9g              o /        ,a   gIfs/
  150. O   OC)p≤ sEso LENCE (TEXT(1),TEOF)
  151.       DATA RECNUM / ECNHARAECN2 / 1 /
  152. /Pï    *,20e ,a   gIfs/
  153. O   OC)p≤ sEso LENCE (T,a;ETETa   gIfs/
  154. O   OC)p≤ kT     g T )
  155.  
  156.   IS,IHDwg9Dwg9[ki sbkS='OaA≤B)
  157.   ',9(9g              o /        ,aAkE[         g :CDR,r    Y,uhImteNO0IToWP1no2 / 1 /
  158. ATIS,IHDwgeC KT     g_OaA≤U NUr╤uTTo',9(9n9En9b.DE4NFORMATTo'9eRCuauc 1 /, RECcbg RECNHARACTER*1iC K$NOD6T  ╟CE (TETETETETETETETETO *
  159. C  m- aLAiEEEEfIS,IHDwg9[kIS,IHDwg9T  ╟CEeCD3Y        v6.2       *
  160. C     *     (Cña   OC)p≤ kT     g T )
  161.  
  162.   IS,IHDwg9Dwg9[ki sbkS='OaA≤B)
  163.   ',9(9g              o /        ,aAkE[         g :CDR,r    Y,uhImteNO0IToWP1no2 / 1 /
  164. ATIS,IHDwgeC KT     g_OaA≤U NUr╤uTTo',9(9n9En9b.DE4NFORMAMφEATISdL(9n9      oeeARACTER*r(Dwg9[ki sbkSm7ECcbg1T     g_To'9eRCuIS,
  165.  NUr╤uTT,a          $.aS,
  166.  NUr╤uhImteNO0ITdthEY  xSdL(9n9  _To'9eRr    Y,uh     RS DATh:RiDwg9[ki sbkSm7ECcbg1T     g_To'9eRCuIS,
  167.  NUr╤uTT,a          $.aS,
  168.  NUr╤uhImteNO0ITdthEY  xSdL(9n9  _To'9eRr    Y,uh     RS DATh:RiDwg9[ki sbkSm7ECcbg1T     g_To'9eRCuIS,
  169.  NUr╤uTT,a          $.aS,
  170.  NUr╤uhImteNO0ITdthEY  xSdL(9(9(9g       bg1T:CD eDm2  RS DATh:RiDwg9[ki sbkSm7ECcbg1T     g_To'9eRCuIS,
  171.  NUr╤uTT,a          $.aS,
  172.  NUr╤ NUr:CD 
  173.  T )
  174.  
  175.   IS,td
  176.   IS,IHDwg9[DATh:R(y NUr╤uSSSSSSSSNCc.aS,
  177.  NCE_,a      cORMATTn9╠IL(9(9(-   **O0)mChπNUr╤uTr    Y,uhImteNO0IToWP1noHIHDwD9e  RS DATh:RiDwg9[ki sbkSm7ECcbg1To'9eRr    :CD eDm2  RS DAThgpR,euTTDLFORNODC$'9eR)  *    0 GGGGlcbg1To'9eRr    :CD eDm2  RS DAThgpRxl rGGlcbg    fOilb   nE5IImteIHDw sleuTTDLFORNODC$'9eR)  *    0 GGGGlce╖ 0 aS,IH   cOReRC"u╜TERC$'lsl1.slns8or▌    ER*16 TEOFp* 'oT **OUT7o   DAT           WuEo⌠aL
  178. C1S DATA╡OD$ok FORMAT(10X,'PC59(9,FRsl 6  *  1k.FIN,slRii =4u r1),SFIN   O ¢n_e(TE(NCuau(10X,     (GHT RICbu3SLFORMA4YPTOGRAk.FIN  [tFORMATPdrPr
  179. Cuu9Hin  C    i
  180.  19  eαuRLE
  181. ) 1S DATAIirORMAECNR4-,EEu g**Tc0 f4AcLsbkSm7ECcbg1    f NCEm u4-,EEf,/
  182. a'lsl1DbDATAIS▌   C59(9,1S DADsiu io9b.DE4    0 GG WuE3a'lsac10X,   i
  183.  OFp* 'oT **OUT0)ORiDwg9[k:*OUT(10g TEHYPT-(C     (GHT RNTETETO *
  184. C  m- aLAiEEEEfIS,IHDwg9[kIS,IHDwg9T  ╟CEeCD3Y        v6.2       *
  185. C     *     (Cña   OC)p≤ kT     g T )
  186.  
  187.   IS,IHD w)*1 ICO/
  188.  999 * 0 T   aLoT )Ur╤uTTo',9no9(9,FRsaTPdrP0X,p sbNODC$T   aLoT )-    (GHT ahEEfIS,Iicr2  RS [CñfIS,I 9[kI.T )-   OaTPdrP0X,p sbNODC$d  (TI0  lNcLsbk,0  c1bECcbg1T     C
  189. C
  190. C    0 Iast75aAkE[0 IpddrP0X,p sbNODC$T   aLoT )-    (GHT ahEEfIS,Iicr2  RS [CñfIS,I 9[kI.T )-   OaTPdrP0X,p sbNODC$d  (TI0  lNcLsbk,0  c1bECcbg1T     C
  191. C
  192. C    0 Iast75aAkE[0 IpddrP0X,p sbNODC$T   aLoT )-    (GHT ahEEfIS,Iicr2  RS [CceATTn9hgpR,pR,pR,i
  193.    DlpR,pR,i
  194.   9T in $.aS,k OC)cp sCcbgvaAkE[0 IpEtI.T )-   OnoDwg9[u(10  c1bECcbg1T     C
  195. CuECcm    (∩SLFORMWP1no2 / 1 /
  196. ATIS,IHDwgeC KT     g_OaA≤U NUr╤uTTo',9(9n9En9b.DE4NFORMAMφEATISdL(9n9      oT╟CE,.fa,DR Ip   OaTPdAEn9bGHT ahEEfIS,Iicr2  Yk9 *Oo /mo
  197. AK:s1 ImteNi8,IHDwg9[_iRC    L(9NHARAECN2 / 1 /2 / 1 /
  198. xT ahEEfIS,IicwNin rMi,k OC)cp   aLoT  /iC Kog R  sA   eF [lT )
  199.  oll'IS,IHDwg9aRMWP1nofIS,IiNO0ITrnoDwg9[u(105 *    X $.aeT Iog:RiAw1iC Kog R  sA   eF [lT ie1S DATA╡OD$oS *
  200. C   ≤ T )go X $.aRGHT1 KEYYS /=LhE3 gIfsNECcA Te   /iC Ko2oD:3 gIfsNEC
  201.   IS,IHDwg9Dwg9[ki sbkS='OaA≤B)
  202.   ',9(9g              o /        RE5⌠ost9[kuECcm (105 RMATtr2 CE WP1n'E KogNO0DwgIHDwg9Dwge*   )
  203.  R   ╩ECcaK     K[:RiI 9wge*   )
  204.  R   ╩ECcaK     K[:RiI 9wge*   )
  205.  R   ╩IHDwgeC s 3_e(TE(MoD:3 _e(TE(MoD:3 _e(:nK     ∞╩ECca)
  206.  R╙LÉL:Uvr:nKñfIS,I OUTi sbkSmr)
  207. S='OaA≤rra sbkbD )
  208.  3 fIHn0 'Ccaisbk)-    o / IHnRiI 9wge oT╟CE,.fE(MoDl0 R   ╩IHKñfR╙miC K/
  209. A Te   fOiL
  210.   ',9(*Oo / $.aS    *
  211.  fIS,LY  E9NHARA-'α)-    (GHT ahEE 
  212.  3 fUTi sR1no2 / 1 AEn9-,EEf,/
  213. a'lsl1DbDATAIS▌   C59(9,1S DADsiu io9b.DE4    0 GG WuE3a'lsac10X,   i
  214.  OFp* 'oT **OUT0)ORiDwg9[k:*OUT(10g TEHYPT-(C     (GHT RNTETETO *
  215. C  m- aLAiEEEEfIS,IHDwg9[kIS,IHDwg9T  ╟CEeCD3Y        v6.2       *
  216. C     *     (Cña   OC)p≤ kT     g{   fO:r RECNHb.DE4 4GGuT     FORNODC$lcP0X7m:r RLnn9╠IL(9(9ya  yaETO 3bD   g{   f= [:RiI 9wge*   )
  217.  R  ECcbg1RytR  ECcbg1RyaF0$(YPT-(O0I9wge*  OTEHio9        a8r9wgICb   /i4GGuT     FORNODC$lcP0X7m:rkI wg9[ki1EEfiL7g{   0IToWc@*)yu4-,5REe0)ORiDwgl┌=   e  fO ahEEL╜p=  teNO0IToWP1no2 / 1 /
  218. ATIS,IHDwgeC KT     g_OaA≤U NUr╤uTTo',9(9n9En9b.DE4NFORMATTo'9eRCuauc 1 /, RECcbg RECNHARACTER*1iC K$NOD6T  ╟CE (TETETETETETETETETO *
  219.     *     (Cñ '-s RECNH*
  220. g9[.T )-   OnoDwg9Y        wg9[k-   Onuth2 * 'iaaTPdEk7TETO *ORTABLE CRY  'C"n9u'9eRCul          ─ECNH*
  221. g TEHYPl  o╠IL(9(9(-so LENsIS,Il4KAaeATTnoDwg9Y        wg9[k-   Onuth2 * 'iaaTPdb     *
  222. C =[ki1EERECNHAC   g_O      E< sA   eF [lT )
  223.  oll'IS,IHDwg9aiC K$NOD6T  ╟CE (TETETETETm:r RLnn9╠IL(9(9ya  yaETO 3bD   g{   f= [:RiI 9wge*   )
  224.  R  ECcbg1RytR  ECcbg1Ry)[ifRMAMφEATISdL(9n9      oeeARACTER*r(Dwg9[ki sbkSm7ECcbg1T     g_To'9eRCuscg T )
  225. L(9NHARAEi sbkR,eEL╜p=  teECctahg1    f )
  226. 7  █NHARAEi sDwg9ATI WuE31,SAEi sDwg9ATI xSdL(9(=YPT-(C[:RocE5⌠oseNO0IT0 GG  sDw mSm7Eg9[M    (∩SÆ47,0  c1bECSÆ4geC KWr 'TERu,ui6mSm7Eg9[M  Ccbg RECco LT IHDwtFD3Y   rNbg REC(∩Sa9Enu,uill'IS,IHDwgOn',9(9n9En9   0, RECcIHDwgOtn)-    (GHNUr╤uT  KWos,IHDST 1 / *    En9o [iflW$SUr╤uT  a sa sa sa saTOth2 * 'iaaTmr)
  227. ENO0IDwg9ATI WuE31,SAEi sDwWd*)yuestmEEIHDwg9Dw    * C$'9eR (TETETET IoT  KlETE)
  228.  ET   aLAE4NWuE31,SAEi tM  OC)p≤ kRW$SUrsbkkiNO¿╤uT  KWIlETE)
  229.  DwgOtnhYPT-u,uisE)yueCWT  KIs╓ss ╫w