home *** CD-ROM | disk | FTP | other *** search
/ BBS 1 / BBS#1.iso / document / mn195.ha / VINOCURO.TXT < prev   
Text File  |  1994-12-26  |  34KB  |  1,052 lines

  1. ;-----------------------------------------------------
  2. ; ÉÑ὿ºáµ¿∩ π¡¿óÑαßá½∞¡«ú« µ¿¬½á Φ¿Σα«óá¡¿∩ á½ú«α¿Γ¼á
  3. ; ¬α¿»Γ«úαáΣ¿τÑ߬«ú« »αÑ«íαẫóá¡¿∩ âÄæÆ 28147-89.
  4. ; Copyright (C) 1992-1994 é¿¡«¬πα«ó Ç.₧.,ú.î«ß¬óá.
  5. ;-----------------------------------------------------
  6. ;>Åáαá¼ÑΓαδ  »α¿  ó맮óÑ:
  7. ;   (DX,AX)=N1, (BP,DI)=N2;
  8. ;   ES:SI - áñαÑß ¬½ετá;
  9. ;   DS:BX - áñαÑß Γáí½¿µδ ºá¼Ñ¡;
  10. ;   CX    - τ¿ß½« «ß¡«ó¡δσ Φáú«ó
  11. ;>ÉѺπ½∞ΓáΓδ ¡á óδσ«ñÑ:
  12. ;   (BP,DI)=N1, (DX,AX)=N2 ñ½∩ µ¿¬½«ó 32-ç,32-É;
  13. ;   (DX,AX)=N1, (BP,DI)=N2 ñ½∩ µ¿¬½á  16-ç;
  14. ;>êß»«½∞ºπѼδÑ αÑú¿ßΓαδ:  éæà
  15. ;>çá¼Ñτá¡¿∩:
  16. ;  é ¬«¡µÑ óδ»«½¡Ñ¡¿∩ ß«ñÑন¼«Ñ αÑú¿ßΓα«ó ß½ÑñπεΘÑÑ:
  17. ;  BX-(π¬áºáΓѽ∞ Γáí½¿µδ ºá¼Ñ¡) - Γ« ªÑ, τΓ« ó ¡áτá½Ñ
  18. ;  SI-(π¬áºáΓѽ∞ ¬½ετá) - π¬áºδóáÑΓ ¡á »Ñαóδ⌐ íá⌐Γ ºá
  19. ;     ¬½ετ«¼ - φΓ« ¡á 32*4=128 í«½∞ΦÑ »Ñαó«¡áτá½∞¡«ú«
  20. ;     º¡áτÑ¡¿∩  SI ñ½∩ µ¿¬½«ó Φ¿Σα«óá¡¿∩ ¿ ¡á 16*4=64
  21. ;     í«½∞ΦÑ »Ñαó«¡áτá½∞¡«ú« º¡áτÑ¡¿∩ ñ½∩ µ¿¬½á óδαá-
  22. ;     í«Γ¬¿ ¿¼¿Γ«»α¿ßΓáó¬¿
  23. ;  CX=0
  24. ;  æ«ñÑন¼«Ñ ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓα«ó ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
  25. ;-----------------------------------------------------
  26. ;
  27.     .model  large,C
  28.         .code    $gost
  29. gost    proc    near
  30.         public  gost
  31. ; é¡πΓαÑ¡¡¿⌐  µ¿¬½  αáí«Γδ  Å/Å
  32. ; 1. ìáτὫ  µ¿¬½á  ¿  ß«σαá¡Ñ¡¿Ñ  ßΓáα«ú«  N1
  33. iloop:  push    DX
  34.         push    AX
  35. ; 2. ä«íáó½Ñ¡¿Ñ  ¬  N1  ¬½ετá  »«  ¼«ñπ½ε  2^32
  36.         add     AX,ES:[SI]
  37.         adc     DX,ES:[SI+2]
  38.         add     SI,4
  39. ; 3. Å«í½«τ¡á∩ ºá¼Ñ¡á ó S ß« ßñó¿ú«¼ ¡á 8 í¿Γ ó½Ñó« !
  40.         xlat            ; »ÑαѬ«ñ¿απѼ AL
  41.         xchg    AH,AL   ;  ¿ ¼Ñ¡∩Ѽ Ñú« ß AH
  42.         inc     BH      ;   »α«ñó¿úáѼ π¬áºáΓѽ∞ ºá¼Ñ¡δ
  43.         xlat            ; »ÑαѬ«ñ¿απѼ AH
  44.         xchg    DL,AL   ;  ¿ ¼Ñ¡∩Ѽ Ñú« ß DL
  45.         inc     BH      ;   »α«ñó¿úáѼ π¬áºáΓѽ∞ ºá¼Ñ¡δ
  46.         xlat            ; »ÑαѬ«ñ¿απѼ DL
  47.         xchg    DH,AL   ;  ¿ ¼Ñ¡∩Ѽ Ñú« ß DH
  48.         inc     BH      ;   »α«ñó¿úáѼ π¬áºáΓѽ∞ ºá¼Ñ¡δ
  49.         xlat            ;  »ÑαѬ«ñ¿απѼ DH
  50.         sub     BH,3    ; BX <- Ñú« »αѪ¡ÑÑ º¡áτÑ¡¿Ñ
  51. ; 4. éαáΘÑ¡¿Ñ  S  ÑΘÑ  ¡á  3  í¿Γá  ó½Ñó«
  52. REPT 3
  53.         shl     AX,1
  54.         rcl     DX,1
  55.         adc     AX,0
  56. ENDM
  57. ; 5. éδτ¿ß½Ñ¡¿Ñ  ¡«óδσ  º¡áτÑ¡¿⌐  N1,N2
  58.         xor     DX,BP
  59.         xor     AX,DI
  60.         pop     DI
  61.         pop     BP
  62. ; çáóÑαΦÑ¡¿Ñ  ó¡πΓαÑ¡¡Ñú«  µ¿¬½á
  63.     loop    iloop
  64.         ret
  65. gost    endp
  66.         end
  67. ;-----------------------------------------------------
  68. ; ÿ¿Σα«óá¡¿Ñ ¼áßß¿óá ñá¡¡δσ ó αѪ¿¼Ñ »α«ßΓ«⌐ ºá¼Ñ¡δ
  69. ; Copyright (C) 1992-1994 é¿¡«¬πα«ó Ç.₧., ú. î«ß¬óá.
  70. ;-----------------------------------------------------
  71. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  72. ; æ¼ÑΘÑ¡¿Ñ  ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  73. ; NEAR FAR
  74. ;  2    4      4      FAR-áñαÑß ¬½ετá
  75. ;  6    8      4      FAR-áñαÑß í½«¬á ñá¡¡δσ
  76. ; 10   12      4      FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
  77. ; 14   16      2      è«½¿τÑßΓó« Φ¿ΣαπѼδσ í½«¬«ó
  78. ;-----------------------------------------------------
  79. ; Åα¿ óδσ«ñÑ: áñαÑß Φ¿ΣαπѼ«⌐ «í½áßΓ¿ ß¬«ααÑ¬Γ¿α«óá¡
  80. ; æτÑΓτ¿¬ ñ½¿¡δ = 0
  81. ;-----------------------------------------------------
  82. ; çáΦ¿Σα«óá¡¿Ñ ¿½¿ αáßΦ¿Σα«óá¡¿Ñ ºáñáÑΓß∩ »ÑαÑñáτÑ⌐
  83. ; ß««ΓóÑΓßΓóπεΘÑú« áñαÑßá ¬½ετá - »«α∩ñ«¬ φ½Ñ¼Ñ¡Γ«ó
  84. ; ó ¬½ετáσ  ºáΦ¿Σα«óá¡¿∩  ¿  αáßΦ¿Σα«óá¡¿∩  óºá¿¼¡«
  85. ; «íαáΓ¡δ⌐.
  86. ;-----------------------------------------------------
  87. ;
  88.         .model  large,C
  89.         .code    $gost
  90.     extrn    gost:near
  91. simple  proc
  92.         public  simple 
  93. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  94.         a=8             ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
  95. IF      (TYPE simple) EQ 0FFFEh
  96.         a=a+2           ; Ñß½¿ simple - far-»α«µÑñπαá
  97. ENDIF
  98. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  99. ;
  100. key=    2+a             ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ¬½ετá
  101. syn=    6+a             ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ñá¡¡δσ
  102. chg=    10+a            ; ß¼ÑΘÑ¡¿Ñ áñαÑßá Γáí½. ºá¼Ñ¡
  103. len=    14+a            ; ß¼ÑΘÑ¡¿Ñ ßτÑΓτ¿¬á í½«¬«ó
  104. ;
  105. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ó ß««ΓóÑΓßΓó¿¿ ß ß«ú½. Turbo C
  106.     push    BP
  107.     push    DS    ; φΓ« ¡Ñ óßÑúñá «í∩ºáΓѽ∞¡«
  108.     push    SI
  109.     push    DI
  110. ; ìáßΓα«⌐¬á αáí«τ¿σ αÑú¿ßΓα«ó
  111.         mov     BP,SP       ; ßΓφ¬«óδ⌐ ¬áñα
  112.         lds     BX,chg[BP]  ; Γáí½¿µá ºá¼Ñ¡
  113. ; çáúαπº¬á  í½«¬á  ó  αÑú¿ßΓαδ
  114. circle: les     SI,syn[BP]  ; ºáúαπº¬á áñα.ß-»«c佬¿
  115.         mov     AX,ES:[SI]  ; AX <- ¼½áñΦÑÑ ß½«ó« N1
  116.         mov     DX,ES:2[SI] ; DX <- ßΓáαΦÑÑ ß½«ó« N1
  117.         mov     DI,ES:4[SI] ; DI <- ¼½áñΦÑÑ ß½«ó« N2
  118.         mov     CX,ES:6[SI] ; CX <- ßΓáαΦÑÑ ß½«ó« N2
  119. ; â«Γ«ó¿¼ αÑú¿ßΓαδ ¿ óδºδóáѼ »α«ßΓπε ºá¼Ñ¡π
  120.         les     SI,key[BP]
  121.         mov     BP,CX
  122.         mov     CX,32
  123.         call    gost
  124.     mov     CX,BP
  125.     mov     BP,SP
  126. ; çỿß∞  αѺπ½∞ΓáΓá  ¡á  ¼ÑßΓ«
  127.         les     SI,syn[BP]  ; ºáúαπº¬á  áñαÑßá  ß¿¡σα«»«»δ½¬¿
  128.         mov     ES:[SI],DI  ; º á ¡ « ß ¿ ¼
  129.         mov     ES:2[SI],CX ;    α Ñ º π ½ ∞ Γ á Γ
  130.         mov     ES:4[SI],AX ;       ¡ á     Ñ ú «
  131.         mov     ES:6[SI],DX ;          ¼ Ñ ß Γ « !!!
  132. ; Åα«óÑα¬á ¡á ¬«¡Ñµ µ¿¬½á
  133.         dec     WORD PTR len[BP]; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
  134.         jnz     circle      ; µ¿¬½¿¼ß∩
  135. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó
  136.     pop    DI
  137.     pop    SI
  138.     pop    DS
  139.     pop    BP
  140.     ret
  141. simple  endp
  142.     end
  143. ;------------------------------------------------------
  144. ; ÿ¿Σα«óá¡¿Ñ ¼áßß¿óá ñá¡¡δσ ó αѪ¿¼Ñ úá¼¼¿α«óá¡¿∩
  145. ; ß«ú½áß¡« ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89
  146. ; Copyright (C) 1992-1994 é¿¡«¬πα«ó Ç.₧.,  ú. î«ß¬óá.
  147. ;------------------------------------------------------
  148. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  149. ; æ¼ÑΘÑ¡¿Ñ ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  150. ;NEAR FAR
  151. ;  2   4      4     FAR-áñαÑß ¬½ετá
  152. ;  6   8      4     FAR-áñαÑß ß¿¡σα«»«ß佬¿ (S1,S2)
  153. ; 10  12      4     FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
  154. ; 14  16      4     FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩
  155. ; 18  20      2     τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  156. ;------------------------------------------------------
  157. ; Åα¿ óδσ«ñÑ: áñαÑß  «í½áßΓ¿  ¡áº¡áτÑ¡¿∩  ¿  ñ½¿¡á
  158. ;             ß«ñÑαªáΓ ß¬«ααÑ¬Γ¿α«óá¡¡δÑ »áαá¼ÑΓαδ
  159. ;------------------------------------------------------
  160. ; «»αÑñѽ∩Ѽ ¬«¡ßΓá¡Γδ C1,C2 »« âÄæÆ
  161. ;
  162. C1low    equ    0101h
  163. C1high    equ    0101h
  164. C2low    equ    0104h
  165. C2high    equ    0101h
  166. ;
  167.     .model  large,C
  168.     .code   $gost
  169.     extrn    gost:near
  170. gamma   proc
  171.     public  gamma
  172. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  173.     a=8             ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
  174. IF      (TYPE gamma) EQ 0FFFEh
  175.     a=a+2           ; Ñß½¿ gamma - far-»α«µÑñπαá
  176. ENDIF
  177. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  178. ;
  179. key=    2+a
  180. syn=    6+a
  181. chg=    10+a
  182. con=    14+a
  183. tar=    14+a
  184. len=    18+a
  185. ;
  186. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ß«ú½áß¡« ß«ú½áΦÑ¡¿∩¼ Turbo C
  187.     push    BP
  188.     push    DS          ; φΓ« ¡πª¡« ¡Ñ óßÑúñá !
  189.     push    SI
  190.     push    DI
  191. ; ¡áßΓα«⌐¬á αÑú¿ßΓα«ó
  192.     mov     BP,SP       ; ßΓφ¬«óδ⌐ ¬áñα
  193.     lds     BX,chg[BP]  ; DS:BX <- áñαÑß Γáí½.ºá¼Ñ¡
  194. ; ä«íáó½Ñ¡¿Ñ  ¬«¡ßΓá¡Γ
  195. circle: les     SI,syn[BP]  ; áñαÑß    ß¿¡σα«»«»δ½¬¿
  196.     mov     AX,ES:[SI]  ; AX <- ¼½áñΦÑÑ ß½«ó« S1
  197.     mov     DX,ES:2[SI] ; DX <- ßΓáαΦÑÑ ß½«ó« S1
  198.     mov     DI,ES:4[SI] ; DI <- ¼½áñΦÑÑ ß½«ó« S2
  199.     mov     CX,ES:6[SI] ; CX <- ßΓáαΦÑÑ ß½«ó« S2
  200.     add     AX,C1low    ; ¿º¼Ñ¡Ñ¡¿Ñ S1:
  201.     adc     DX,C1high   ;    S1=(S1+C1) mod 2^32
  202.     stc                 ; ñ½∩ ñ«íáó½Ñ¡¿Ñ 1 ¬ N2
  203.     adc     DI,C2low    ; ¿º¼Ñ¡Ñ¡¿Ñ S2:
  204.     adc     CX,C2high   ;  S2=(S2+C2) mod (2^32-1)
  205.     cmc                 ; Ñß½¿ ¡Ñ í佫 »ÑαÑ¡«ßá,Γ«
  206.     sbb     DI,0        ;  ¡Ñ ßΓ«¿½« ñ«íáó½∩Γ∞ 1,
  207.     sbb     CX,0        ;   »«φΓ«¼π S2=S2-1
  208.     mov     ES:[SI],AX  ; ºá¡«ß¿¼ ¡«óδÑ
  209.     mov     ES:2[SI],DX ;    º¡áτÑ¡¿∩ S1,S2
  210.     mov     ES:4[SI],DI ;       ¡á   ¿σ
  211.     mov     ES:6[SI],CX ;          ¼ÑßΓ« !!!
  212. ; â«Γ«ó¿¼ αÑú¿ßΓαδ ñ½∩ ó맮óá µ¿¬½á 32-ç;
  213.     les     SI,key[BP]  ; ES:SI <- áñαÑß ¬½ετá
  214.     mov     BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  215.     mov     CX,32       ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  216.     call    gost        ; Φáú  »α«ßΓ«⌐  ºá¼Ñ¡δ
  217.     mov     CX,BP       ; CX <- ßΓáαΦÑÑ  ß½«ó«  S2
  218.     mov     BP,SP       ; BP <- ßΓѬ«óδ⌐  ¬áñα
  219. ; êß»«½∞º«óá¡¿Ñ  ßúÑ¡Ñα¿α«óá¡¡«ú«  í½«¬á  úá¼¼δ
  220.     les     SI,tar[BP]  ; DS:SI<-áñαÑß  ¡áº¡áτÑ¡¿∩
  221.     xor     ES:[SI],DI  ; âá¼¼¿απѼ
  222.     xor     ES:2[SI],CX ;    8-íá⌐Γ¡δ⌐
  223.     xor     ES:4[SI],AX ;       í½«¬
  224.     xor     ES:6[SI],DX ;          ñá¡¡δσ
  225.     add     word ptr tar[BP],8; ¬«ααѬµ¿∩ π¬áºáΓѽ∩
  226.     dec     word ptr len[BP]  ; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
  227.     jnz     circle      ; ¡á úÑ¡Ñαáµ¿ε ¡«ó«ú« í½«¬á
  228. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
  229.     pop     DI
  230.     pop     SI
  231.     pop     DS
  232.     pop     BP
  233.     ret
  234. gamma   endp
  235.     end
  236. ;------------------------------------------------------
  237. ; çáΦ¿Σα«óá¡¿Ñ ¼áßß¿óá ñá¡¡δσ ó αѪ¿¼Ñ úá¼¼¿α«óá¡¿∩ ß
  238. ; «íαáΓ¡«⌐ ßó∩º∞ε ß«ú½áß¡« á½ú«α¿Γ¼π âÄæÆ 28147-89
  239. ; Copyright (C) 1992-1994 é¿¡«¬πα«ó Ç.₧.,  ú. î«ß¬óá.
  240. ;------------------------------------------------------
  241. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  242. ; æ¼ÑΘÑ¡¿Ñ ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  243. ;NEAR FAR
  244. ;  2   4      4     FAR-áñαÑß ¬½ετá
  245. ;  6   8      4     FAR-áñαÑß ß¿¡σα«»«ß佬¿ (S1,S2)
  246. ; 10  12      4     FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
  247. ; 14  16      4     FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩
  248. ; 18  20      2     τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  249. ;------------------------------------------------------
  250. ; Åα¿ óδσ«ñÑ: áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ ¿ ß¿¡σα«»«ß佬á
  251. ; ß«ñÑαªáΓ ß¬«ααÑ¬Γ¿α«óá¡¡δÑ »áαá¼ÑΓαδ, ßτÑΓτ¿¬ = 0
  252. ;------------------------------------------------------
  253. ;
  254.         .model  large,C
  255.         .code    $gost
  256.     extrn    gost:near
  257. gammaLE proc
  258.     public  gammaLE
  259. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  260.         a=8             ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
  261. IF      (TYPE gammaLE) EQ 0FFFEh
  262.         a=a+2           ; Ñß½¿ gamma - far-»α«µÑñπαá
  263. ENDIF
  264. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  265. ;
  266. key=    2+a
  267. syn=    6+a
  268. chg=    10+a
  269. tar=    14+a
  270. len=    18+a
  271. ;
  272. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ß«ú½áß¡« ß«ú½áΦÑ¡¿∩¼ Turbo C
  273.         push    BP
  274.         push    DS          ; φΓ« ¡πª¡« ¡Ñ óßÑúñá !
  275.     push    SI
  276.         push    DI
  277. ; ä«íáó½Ñ¡¿Ñ  ¬«¡ßΓá¡Γ
  278.         mov     BP,SP       ; ¡áßΓα«⌐¬á ßΓφ¬«ó«ú« ¬áñαá
  279.         lds     SI,syn[BP]  ; DS:SI -> ß¿¡σα«»«»δ½¬á
  280.         mov     AX,[SI]     ; AX <= ¼½áñΦÑÑ ß½«ó« S1
  281.         mov     DX,2[SI]    ; DX <= ßΓáαΦÑÑ ß½«ó« S1
  282.         mov     DI,4[SI]    ; DI <= ¼½áñΦÑÑ ß½«ó« S2
  283.         mov     CX,6[SI]    ; CX <= ßΓáαΦÑÑ ß½«ó« S2
  284.         lds     BX,chg[BP]  ; DS:BX <- áñαÑß Γáí½.ºá¼Ñ¡
  285. ; â«Γ«ó¿¼ αÑú¿ßΓαδ ¿ óδºδóáѼ µ¿¬½ 32-ç
  286. circle: les     SI,key[BP]  ; ES:SI <- áñαÑß ¬½ετá
  287.         mov     BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  288.         mov     CX,32       ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  289.         call    gost        ; Φáú  »α«ßΓ«⌐  ºá¼Ñ¡δ
  290.         mov     CX,BP       ; CX <- ßΓáαΦÑÑ  ß½«ó«  S2
  291.         mov     BP,SP       ; BP <- ßΓѬ«óδ⌐  ¬áñα
  292. ; êß»«½∞º«óá¡¿Ñ  ßúÑ¡Ñα¿α«óá¡¡«ú«  í½«¬á  úá¼¼δ
  293.         les     SI,tar[BP]  ; DS:SI<-áñαÑß  ¡áº¡áτÑ¡¿∩
  294. ; íπñÑΓ á½∞ΓÑα¡áΓ¿óá
  295.         xor     DI,ES:[SI]  ; âá¼¼¿απѼ
  296.         xor     CX,ES:2[SI] ;    8-íá⌐Γ¡δ⌐
  297.         xor     AX,ES:4[SI] ;       í½«¬
  298.         xor     DX,ES:6[SI] ;          ñá¡¡δσ
  299.         mov     ES:[SI],DI  ; ¿ ºá»¿ßδóáѼ
  300.         mov     ES:2[SI],CX ;   Ñú«  
  301.         mov     ES:4[SI],AX ;     ¡á ¡πª¡«Ñ  
  302.         mov     ES:6[SI],DX ;       ¼ÑßΓ«   
  303.         xchg    AX,DI       ; «í¼Ñ¡ º¡áτÑ¡¿∩¼¿
  304.         xchg    DX,CX       ;   S1 <--> S2
  305. ; á½∞ΓÑα¡áΓ¿óá »«ß½Ññ¡¿¼ 10 ßΓ᫬á¼:¬«α«τÑ,¡« ¼Ññ½Ñ¡¡ÑÑ
  306. ; ¡á »α«µÑßß«αáσ 8086,8088.
  307. ;       xor     ES:[SI],DI  ; âá¼¼¿απѼ
  308. ;       xor     ES:2[SI],CX ;    8-íá⌐Γ¡δ⌐
  309. ;       xor     ES:4[SI],AX ;       í½«¬
  310. ;       xor     ES:6[SI],DX ;          ñá¡¡δσ
  311. ;       mov     AX,ES:[SI]  ; ºáúαπªáѼ 
  312. ;       mov     DX,ES:2[SI] ;   í½«¬ ñ½∩ 
  313. ;       mov     DI,ES:4[SI] ;     ß½ÑñπεΘÑú«
  314. ;       mov     CX,ES:6[SI] ;       Φáúá
  315. ; á½∞ΓÑα¡áΓ¿óᠺᬫ¡τÑ¡á
  316.         add     word ptr tar[BP],8; ¬«ααѬµ¿∩ π¬áºáΓѽ∩
  317.         dec     word ptr len[BP]  ; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
  318.         jnz     circle      ; ¡á úÑ¡Ñαáµ¿ε ¡«ó«ú« í½«¬á
  319. ; ºá¡«ß¿¼ ¡«ó«Ñ º¡áτÑ¡¿Ñ ß¿¡σα«»«ß佬¿ ¡á Ñú« ¼ÑßΓ«
  320. ; (φΓ« ¡πª¡« ñ½∩ «íαáí«Γ¬¿ ¼áßß¿óá ñá¡¡δσ τáßΓ∩¼¿)
  321.         lds     SI,syn[BP]  ; DS:SI -> ß¿¡σα«»«ß佬á
  322.         mov     [SI],AX     ; ºá¡«ß¿¼ ¡«óδÑ
  323.         mov     2[SI],DX    ;    º¡áτÑ¡¿∩ S1,S2
  324.         mov     4[SI],DI    ;       ¡á   ¿σ
  325.         mov     6[SI],CX    ;          ¼ÑßΓ« !!!
  326. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
  327.         pop     DI
  328.         pop     SI
  329.         pop     DS
  330.         pop     BP
  331.         ret
  332. gammaLE endp
  333.     end
  334. ;------------------------------------------------------
  335. ; ÉáßΦ¿Σα«óá¡¿Ñ ¼áßß¿óá ñá¡¡δσ ó αѪ¿¼Ñ úá¼¼¿α«óá¡¿∩ ß
  336. ; «íαáΓ¡«⌐ ßó∩º∞ε ß«ú½áß¡« á½ú«α¿Γ¼π âÄæÆ 28147-89
  337. ; Copyright (C) 1992-1994 é¿¡«¬πα«ó Ç.₧.,  ú. î«ß¬óá.
  338. ;------------------------------------------------------
  339. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  340. ; æ¼ÑΘÑ¡¿Ñ ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  341. ;NEAR FAR
  342. ;  2   4      4     FAR-áñαÑß ¬½ετá
  343. ;  6   8      4     FAR-áñαÑß ß¿¡σα«»«ß佬¿ (S1,S2)
  344. ; 10  12      4     FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
  345. ; 14  16      4     FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩
  346. ; 18  20      2     τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  347. ;------------------------------------------------------
  348. ; Åα¿ óδσ«ñÑ: áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ ¿ ß¿¡σα«»«ß佬á
  349. ; ß«ñÑαªáΓ ß¬«ααÑ¬Γ¿α«óá¡¡δÑ »áαá¼ÑΓαδ, ßτÑΓτ¿¬ = 0
  350. ;------------------------------------------------------
  351. ;
  352.         .model  large,C
  353.         .code    $gost
  354.     extrn    gost:near
  355. gammaLD  proc
  356.     public  gammaLD
  357. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  358.         a=8             ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
  359. IF      (TYPE gammaLD) EQ 0FFFEh
  360.         a=a+2           ; Ñß½¿ gamma - far-»α«µÑñπαá
  361. ENDIF
  362. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  363. ;
  364. key=    2+a
  365. syn=    6+a
  366. chg=    10+a
  367. tar=    14+a
  368. len=    18+a
  369. ;
  370. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ß«ú½áß¡« ß«ú½áΦÑ¡¿∩¼ Turbo C
  371.         push    BP
  372.         push    DS          ; φΓ« ¡πª¡« ¡Ñ óßÑúñá !
  373.         push    SI
  374.     push    DI
  375. ; çáúαπº¬á αÑú¿ßΓα«ó ñ½∩ ó맮óá µ¿¬½á Φ¿Σα«óá¡¿∩
  376.         mov     BP,SP       ; ¡áßΓα«⌐¬á ßΓφ¬«ó«ú« ¬áñαá
  377.         lds     SI,syn[BP]  ; DS:SI -> ß¿¡σα«»«»δ½¬á
  378.         mov     AX,[SI]     ; AX <= ¼½áñΦÑÑ ß½«ó« S1
  379.         mov     DX,2[SI]    ; DX <= ßΓáαΦÑÑ ß½«ó« S1
  380.         mov     DI,4[SI]    ; DI <= ¼½áñΦÑÑ ß½«ó« S2
  381.         mov     CX,6[SI]    ; CX <= ßΓáαΦÑÑ ß½«ó« S2
  382.         lds     BX,chg[BP]  ; DS:BX <- áñαÑß Γáí½.ºá¼Ñ¡
  383. ; â«Γ«ó¿¼ αÑú¿ßΓαδ ñ½∩ ó맮óá µ¿¬½á 32-ç;
  384. circle: les     SI,key[BP]  ; ES:SI <- áñαÑß ¬½ετá
  385.         mov     BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  386.         mov     CX,32       ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  387.         call    gost        ; Φáú  »α«ßΓ«⌐  ºá¼Ñ¡δ
  388.         mov     CX,BP       ; CX <- ßΓáαΦÑÑ  ß½«ó«  S2
  389.         mov     BP,SP       ; BP <- ßΓѬ«óδ⌐  ¬áñα
  390. ; êß»«½∞º«óá¡¿Ñ  ßúÑ¡Ñα¿α«óá¡¡«ú«  í½«¬á  úá¼¼δ
  391.         les     SI,tar[BP]  ; DS:SI<-áñαÑß  ¡áº¡áτÑ¡¿∩
  392.     xor     DI,ES:[SI]  ; âá¼¼¿απѼ
  393.         xor     CX,ES:2[SI] ;    8-íá⌐Γ¡δ⌐
  394.         xor     AX,ES:4[SI] ;       í½«¬
  395.         xor     DX,ES:6[SI] ;          ñá¡¡δσ
  396.         xchg    ES:[SI],DI  ; ¼Ñ¡∩Ѽ
  397.         xchg    ES:2[SI],CX ;   Ñú« ß 
  398.         xchg    ES:4[SI],AX ;     í½«¬«¼  
  399.         xchg    ES:6[SI],DX ;       Φ¿Σα«ΓѬßΓá   
  400.         xchg    AX,DI       ; «í¼Ñ¡ º¡áτÑ¡¿∩¼¿
  401.         xchg    DX,CX       ;   S1 <--> S2
  402.         add     word ptr tar[BP],8; ¬«ααѬµ¿∩ π¬áºáΓѽ∩
  403.         dec     word ptr len[BP]  ; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
  404.         jnz     circle      ; ¡á úÑ¡Ñαáµ¿ε ¡«ó«ú« í½«¬á
  405. ; ºá¡«ß¿¼ ¡«ó«Ñ º¡áτÑ¡¿Ñ ß¿¡σα«»«ß佬¿ ¡á Ñú« ¼ÑßΓ«
  406. ; (φΓ« ¡πª¡« ñ½∩ «íαáí«Γ¬¿ ¼áßß¿óá ñá¡¡δσ τáßΓ∩¼¿)
  407.         lds     SI,syn[BP]  ; DS:SI -> ß¿¡σα«»«ß佬á
  408.         mov     [SI],AX     ; ºá¡«ß¿¼ ¡«óδÑ
  409.         mov     2[SI],DX    ;    º¡áτÑ¡¿∩ S1,S2
  410.     mov     4[SI],DI    ;       ¡á   ¿σ
  411.     mov     6[SI],CX    ;          ¼ÑßΓ« !!!
  412. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
  413.     pop     DI
  414.     pop     SI
  415.     pop     DS
  416.     pop     BP
  417.     ret
  418. gammaLD endp
  419.     end
  420. ;------------------------------------------------------
  421. ; éδαáí«Γ¬á ¿¼¿Γ«»α¿ßΓá󬿠ñ½∩ ¼áßß¿óá ñá¡¡δσ ß«ú½áß¡«
  422. ; á½ú«α¿Γ¼π âÄæÆ 28147-89
  423. ; Copyright (C) 1992-1994 é¿¡«¬πα«ó Ç.₧.,  ú. î«ß¬óá.
  424. ;------------------------------------------------------
  425. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  426. ; æ¼ÑΘÑ¡¿Ñ ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  427. ;NEAR FAR
  428. ;  2   4      4     FAR-áñαÑß ¬½ετá
  429. ;  6   8      4     FAR-áñαÑß ¿ßσ«ñ¡«⌐ ¬«¼í¿¡áµ¿¿
  430. ; 10  12      4     FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
  431. ; 14  16      4     FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩
  432. ; 18  20      2     τ¿ß½« ßó«αáτ¿óáѼδσ í½«¬«ó
  433. ;------------------------------------------------------
  434. ; Åα¿ óδσ«ñÑ: áñαÑß «í½áßΓ¿ ñá¡¡δσ ¿ ¬«¡Γα«½∞¡á∩ ¬«¼í¿-
  435. ; ¡áµ¿∩ ß«ñÑαªáΓ ß¬«ααÑ¬Γ¿α«óá¡¡δÑ »áαá¼ÑΓαδ, ßτÑΓτ¿¬=0
  436. ; DX:AX  ß«ñÑαª¿Γ  ¼½áñΦÑÑ  ñó«⌐¡«Ñ  ß½«ó«  ¬«¡Γα«½∞¡«⌐
  437. ; ¬«¼í¿¡áµ¿¿,  ¿ß»«½∞ºπѼ«Ñ «íδτ¡« ¬á¬ ¿¼¿Γ«»α¿ßΓáó¬á -
  438. ; ß««ΓóÑΓßΓóπÑΓ ó«ºóαáΓπ Γ¿»á Item (=unsigned long).
  439. ;------------------------------------------------------
  440. ;
  441.         .model  large,C
  442.         .code    $gost
  443.     extrn    gost:near
  444. imito   proc
  445.         public  imito
  446. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  447.         a=8             ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
  448. IF      (TYPE imito) EQ 0FFFEh
  449.         a=a+2           ; Ñß½¿ gamma - far-»α«µÑñπαá
  450. ENDIF
  451. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  452. ;
  453. key=    2+a
  454. syn=    6+a
  455. chg=    10+a
  456. tar=    14+a
  457. len=    18+a
  458. ;
  459. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ß«ú½áß¡« ß«ú½áΦÑ¡¿∩¼ Turbo C
  460.         push    BP
  461.         push    DS          ; φΓ« ¡πª¡« ¡Ñ óßÑúñá !
  462.     push    SI
  463.         push    DI
  464. ; çáúαπªáѼ º¡áτÑ¡¿Ñ ¬«¼í¿¡áµ¿¿ «Γ »α«Φ½«ú« αáºá
  465.         mov     BP,SP       ; ¡áßΓα«⌐¬á ßΓφ¬«ó«ú« ¬áñαá
  466.         lds     SI,syn[BP]  ; DS:SI -> ß¿¡σα«»«»δ½¬á
  467.         mov     AX,[SI]     ; AX <= ¼½áñΦÑÑ ß½«ó« S1
  468.         mov     DX,2[SI]    ; DX <= ßΓáαΦÑÑ ß½«ó« S1
  469.         mov     DI,4[SI]    ; DI <= ¼½áñΦÑÑ ß½«ó« S2
  470.         mov     CX,6[SI]    ; CX <= ßΓáαΦÑÑ ß½«ó« S2
  471.         lds     BX,chg[BP]  ; DS:BX <- áñαÑß Γáí½.ºá¼Ñ¡
  472. ; ä«íáó½∩Ѽ í½«¬ ñá¡¡δσ
  473. circle: les     SI,tar[BP]  ; DS:SI<-áñαÑß  ¡áº¡áτÑ¡¿∩
  474.         xor     AX,ES:[SI]  ; âá¼¼¿απѼ
  475.         xor     DX,ES:2[SI] ;    8-íá⌐Γ¡δ⌐
  476.         xor     DI,ES:4[SI] ;       í½«¬
  477.         xor     CX,ES:6[SI] ;          ñá¡¡δσ
  478. ; â«Γ«ó¿¼ αÑú¿ßΓαδ ¿ óδºδóáѼ µ¿¬½ 32-ç
  479.         les     SI,key[BP]  ; ES:SI <- áñαÑß ¬½ετá
  480.         mov     BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  481.         mov     CX,16       ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  482.         call    gost        ; Φáú  »α«ßΓ«⌐  ºá¼Ñ¡δ
  483.         mov     CX,BP       ; CX <- ßΓáαΦÑÑ  ß½«ó«  S2
  484.         mov     BP,SP       ; BP <- ßΓѬ«óδ⌐  ¬áñα
  485.         add     word ptr tar[BP],8; ¬«ααѬµ¿∩ π¬áºáΓѽ∩
  486.         dec     word ptr len[BP]  ; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
  487.         jnz     circle      ; ¡á úÑ¡Ñαáµ¿ε ¡«ó«ú« í½«¬á
  488. ; ºá¡«ß¿¼ ¡«ó«Ñ º¡áτÑ¡¿Ñ ¬«¼í¿¡áµ¿¿ ¡á Ñú« ¼ÑßΓ«
  489. ; (φΓ« ¡πª¡« ñ½∩ «íαáí«Γ¬¿ ¼áßß¿óá ñá¡¡δσ τáßΓ∩¼¿)
  490.         les     SI,syn[BP]  ; DS:SI -> ß¿¡σα«»«ß佬á
  491.         mov     ES:[SI],AX  ; ºá¡«ß¿¼ ¡«óδÑ
  492.         mov     ES:2[SI],DX ;    º¡áτÑ¡¿∩ S1,S2
  493.         mov     ES:4[SI],DI ;       ¡á   ¿σ
  494.         mov     ES:6[SI],CX ;          ¼ÑßΓ« !!!
  495. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
  496.         pop     DI
  497.         pop     SI
  498.         pop     DS
  499.         pop     BP
  500.         ret
  501. imito   endp
  502.     end
  503. /*-----------------------------------------------------
  504.   Å«ßΓα«Ñ¡¿Ñ αáßΦ¿αÑ¡¡«⌐ Γáí½¿µδ ºá¼Ñ¡ (1024 üá⌐Γ) ¿º
  505.   Γáí½¿µδ ºá¼Ñ¡ (128 üá⌐Γ) á½ú«α¿Γ¼á  âÄæÆ 28147-89.
  506.   Copyright (C) 1992-1994 é¿¡«¬πα«ó Ç.₧., ú. î«ß¬óá.
  507.   -----------------------------------------------------
  508.    Åáαá¼ÑΓαδ  »α¿  ó맮óÑ:
  509.      source - áñαÑß Γáí½¿µδ ºá¼Ñ¡ ó ¿ßσ«ñ¡«¼ Σ«α¼áΓÑ
  510.      target - áñαÑß «í½áßΓ¿ ñ½∩ αáßΦ¿αÑ¡¡«⌐ Γáí½¿µδ
  511.   -----------------------------------------------------
  512. */
  513. #pragma  inline
  514. #include <dos.h>    // FP_SEG,FP_OFF
  515.  
  516. void    ExpCht (void far *source, void far *target)
  517. {
  518. // ìáßΓα«⌐¬á αÑú¿ßΓα«ó ñ½∩ αáí«Γδ Å/Å
  519.   asm   push    DS
  520.   _DS=    FP_SEG  (source);
  521.   _SI=  FP_OFF  (source);
  522.   _ES=  FP_SEG  (target);
  523.   _DI=  FP_OFF  (target);
  524.   asm   {
  525.     cld             // ¡á»αáó½Ñ¡¿Ñ  »α«ß¼«Γαá
  526. // û¿¬½  »«  í½«¬á¼  Γáí½¿µδ  ºá¼Ñ¡
  527.     mov     CX,4    // ºáúαπº¿Γ∞ ßτÑΓτ¿¬ í½«¬«ó
  528.     }
  529. blocks: asm     {
  530.     mov     BX,SI   // BX<-áñαÑß  ¡áτá½á  ½¿¡¿¿
  531.     add     BX,10h  //     ßΓáαΦ¿σ íá⌐Γ«ó í½«¬á
  532. // û¿¬½  »«  ½¿¡¿∩¼  í½«¬á
  533.     push    CX      // ß«σαá¡¿Γ∞  ßτÑΓτ¿¬ í½«¬«ó
  534.     mov     CX,16   // ºáúαπº¿Γ∞  ßτÑΓτ¿¬  ½¿¡¿⌐
  535.     }
  536. lines:  asm    {
  537.     push    SI      // ß«σα. π¬áº. ΓѬπΘ.  í½«¬á
  538.     mov     AH,[BX] // AH <- ßΓáαΦ¿⌐    »«½πíá⌐Γ
  539.     push    CX      // ß«σαá¡¿Γ∞   ßτÑΓτ¿¬ ½¿¡¿⌐
  540.     mov     CL,4    // ßñó¿ú »«½πíá⌐Γá  ¡á ¼ÑßΓ«
  541.     shl     AH,CL   //    ßΓáαΦÑú«  »«½πíá⌐Γá
  542. // û¿¬½  »«  íá⌐Γá¼  ½¿¡¿¿
  543.     mov     CX,16   // ºáúαπº¿Γ∞ ßτÑΓτ¿¬  íá⌐Γ«ó
  544.     }
  545. bytes:  asm    {
  546.     lodsb           // ºáúαπº¿Γ∞ «τÑαÑñ¡«⌐  íá⌐Γ
  547.     or      AL,AH   // ñ«íáó¿Γ∞ ßΓáαΦ¿⌐ »«½πíá⌐Γ
  548.     stosb           // ...  ¿ ºá»¿ßáΓ∞ αѺπ½∞ΓáΓ
  549.     loop    bytes   // µ¿¬½   »«  íá⌐Γá¼   ½¿¡¡¿
  550. // Åα«óÑα¬á  µ¿¬½á  »«  ½¿¡¿∩¼
  551.     pop     CX      // ó«ßßΓá¡«ó. ßτÑΓτ¿¬  ½¿¡¿⌐
  552.     pop     SI      // ó«ßßΓ. π¬áºáΓ. ΓѬ. í½«¬á
  553.     inc     BX      // »α«ñó¿¡πΓ∞ π¬áºáΓѽ∞ íá⌐Γ
  554.     loop    lines   // µ¿¬½  »« ßΓα«¬á¼  Γáí½¿µδ
  555. // Åα«óÑα¬á  µ¿¬½á  »«  í½«¬á¼
  556.     pop     CX      // ó«ßßΓá¡«ó. ßτÑΓτ¿¬ í½«¬«ó
  557.     add     SI,20h  // »α«ñó¿¡πΓ∞  π¬áºáΓ. í½«¬á
  558.     loop    blocks  // µ¿¬½ »« í½«¬á¼
  559.     }
  560.     asm    pop     DS
  561.   return ;
  562. }
  563. /*-----------------------------------------------------
  564.   Å«ßΓα«Ñ¡¿Ñ αáßΦ¿αÑ¡¡ú« ¬½ετá ºáΦ¿Σα«óá¡¿∩ (128 íá⌐Γ)
  565.   ¿º ¬½ετá (32 íá⌐Γá) ¬α¿»Γ«á½ú«α¿Γ¼á âÄæÆ 28147-89.
  566.   Copyright (C) 1992-1994 é¿¡«¬πα«ó Ç.₧., ú. î«ß¬óá.
  567.   -----------------------------------------------------
  568.    Åáαá¼ÑΓαδ  »α¿  ó맮óÑ:
  569.      source - FAR-áñαÑß ¬½ετá ó ¿ßσ«ñ¡«¼ Σ«α¼áΓÑ
  570.      target - FAR-áñαÑß «í½áßΓ¿ ñ½∩ αáßΦ¿αÑ¡¿∩ ¬½ετá
  571.    æσѼá αáßΦ¿αÑ¡¿∩ 3+1: 3 αáºá ó»ÑαÑñ, 1 αẠ¡áºáñ
  572.   -----------------------------------------------------
  573. */
  574. #pragma  inline
  575. #include <dos.h>
  576.  
  577. void    ExpKey31 (void far *source, void far *target)
  578. {
  579. // ìáßΓα«⌐¬á αÑú¿ßΓα«ó ñ½∩ αáí«Γδ Å/Å
  580.   asm   push    DS
  581.   _DS=    FP_SEG  (source);
  582.   _SI=  FP_OFF  (source);
  583.   _ES=  FP_SEG  (target);
  584.   _DI=  FP_OFF  (target);
  585.   asm   {
  586.     cld             // ¡á»αáó½Ñ¡¿Ñ  »α«ß¼«Γαá
  587. ; Æα¿  »α∩¼δσ  í½«¬á
  588.     mov     CX,16   // ¬«»¿α«óáΓ∞
  589.     rep movsw       //   »Ñαóδ⌐
  590.     sub     SI,32   //     í½«¬
  591.     mov     CX,16   // ¬«»¿α«óáΓ∞
  592.     rep movsw       //   óΓ«α«⌐
  593.     sub     SI,32   //     í½«¬
  594.     mov     CX,16   // ¬«»¿α«óáΓ∞
  595.     rep movsw       //   ΓαÑΓ¿⌐ í½«¬
  596. ; «ñ¿¡ «íαáΓ¡δ⌐ í½«¬
  597.     mov     CX,8    // ßτÑΓτ¿¬  ñó«⌐¡δσ  ß½«ó
  598.     }
  599. xlp:    asm     {
  600.     sub     SI,4    // π¬áºáΓѽ∞ ñó«⌐¡. ß½«óá
  601.     mov     AX,[SI] // ºáúαπº¿Γ∞ ¼½áñΦ. ß½«ó«
  602.     stosw           // ...  ¿  ºá»«¼¡¿Γ∞  Ñú«
  603.     mov     AX,2[SI]// ºáúαπº¿Γ∞ ßΓáαΦ. ß½«ó«
  604.     stosw           // ...  ¿  ºá»«¼¡¿Γ∞  Ñú«
  605.     loop    xlp     // µ¿¬½ »« ñó«⌐¡δ¼ ß½«óá¼
  606.     pop     DS
  607.     }
  608.   return ;
  609. }/*----------------------------------------------------
  610.   gost.h -- «»¿ßá¡¿∩ ñá¡¡δσ ¿ »α«Γ«Γ¿¿»δ Σπ¡¬µ¿⌐ Φ¿Σ-
  611.         α«óá¡¿∩.
  612.   ----------------------------------------------------
  613.   éÑαß¿∩ 1.00 «Γ 25.06.94,  (c) 1994 é¿¡«¬πα«ó Ç.₧.
  614.   ----------------------------------------------------
  615. */
  616.  
  617. typedef unsigned long Item;    // φ½Ñ¼Ñ¡Γ ñá¡¡δσ
  618. typedef struct
  619. {
  620.   Item low,high;
  621. } CrBlock;
  622.  
  623. void ExpCht (        // ÉáßΦ¿αÑ¡¿Ñ Γáí½¿µδ ºá¼Ñ¡
  624.   void far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«⌐ Æç
  625.   void far *target);    //   «í½áßΓ∞ αáßΦ¿αÑ¡¡«⌐ Æç
  626.  
  627. void ExpKey31 (         // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '3+1'
  628.   void far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
  629.   void far *target);    //   «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
  630.  
  631. void ExpKey33 (         // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '3+3'
  632.   void far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
  633.   void far *target);    //   «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
  634.  
  635. void ExpKey13 (         // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '1+3'
  636.   void far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
  637.   void far *target);    //   «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
  638.  
  639. void gamma  (           // âá¼¼¿α«óá¡¿Ñ ñá¡¡δσ
  640.   void far *key,        //   áñαÑß ¬½ετá
  641.   void far *synchro,    //   áñαÑß ß¿¡σα«»«ß佬¿
  642.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  643.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  644.   unsigned short blocks);//  τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  645.  
  646. void gammaLE(           // çáΦ¿Σα«óá¡¿Ñ-úá¼¼¿α. ß Äæ
  647.   void far *key,        //   áñαÑß ¬½ετá
  648.   void far *synchro,    //   áñαÑß ß¿¡σα«»«ß佬¿
  649.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  650.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  651.   unsigned short blocks);//  τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  652.  
  653. void gammaLD(           // ÉáßΦ¿Σα«óá¡¿Ñ-úá¼¼¿α. ß Äæ
  654.   void far *key,        //   áñαÑß ¬½ετá
  655.   void far *synchro,    //   áñαÑß ß¿¡σα«»«ß佬¿
  656.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  657.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  658.   unsigned short blocks);//  τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  659.  
  660. void simple(            // ÿ¿Σα«óá¡¿Ñ »α«ßΓ«⌐ ºá¼Ñ¡«⌐
  661.   void far *key,        //   áñαÑß ¬½ετá
  662.   void far *data,       //   áñαÑß Φ¿ΣαπѼδσ ñá¡¡δσ
  663.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  664.   unsigned short blocks);//  τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  665.  
  666. Item imito  (           // éδτ¿ß½Ñ¡¿Ñ ¿¼¿Γ«»α¿ßΓáó¬¿
  667.   void far *key,        //   áñαÑß ¬½ετá
  668.   void far *combine,    //   áñαÑß ¡áτá½∞¡«⌐ ¬«¼í¿¡áµ¿¿
  669.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  670.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  671.   unsigned short blocks);//  τ¿ß½« í½«¬«ó
  672.  
  673. /*----------------------------------------------------
  674.   cryptor.c -- ¿ßσ«ñ¡δ⌐ ΓѬßΓ »α«úαá¼¼δ Φ¿Σα«óá¡¿∩
  675.            Σá⌐½«ó.
  676.   ----------------------------------------------------
  677.   éÑαß¿∩ 1.00 «Γ 25.06.94,  (c) 1994 é¿¡«¬πα«ó Ç.₧.
  678.   ----------------------------------------------------
  679.   ¥Γá »α«úαá¼¼á ß»Ñµ¿á½∞¡« ß«ßΓáó½Ñ¡á ñ½∩ »πí½¿¬áµ¿¿
  680.   ó ªπα¡á½Ñ - ß¼. Γá¼ «»¿ßá¡¿Ñ »α¿¼Ñ¡Ñ¡¿∩.
  681.   ----------------------------------------------------
  682. */
  683.  
  684. #include <io.h>     // open, filelength
  685. #include <fcntl.h>    // O_RDONLY
  686. #include <dir.h>    // MAXPATH
  687. #include <ctype.h>    // toupper
  688. #include <stdlib.h>    // strtoul
  689. #include <stdio.h>      // printf
  690. #include <memory.h>     // setmem
  691. #include "gost.h"       // äá¡¡δÑ ¿ »α«Γ«Γ¿»δ âÄæÆá
  692. // αẼÑα íπΣÑαá «í¼Ñ¡á - ñ«½ªÑ¡ íδΓ∞ ¬αáΓÑ¡ 8
  693. #define  BUFFER_SIZE    8192
  694.  
  695. // â½«íá½∞¡δÑ ßΓáΓ¿τÑ߬¿Ñ ñá¡¡δÑ
  696.  
  697. unsigned _stklen=BUFFER_SIZE+4096; // αẼÑα ßΓφ¬á
  698.  
  699. typedef enum
  700. {
  701.   O_K_=0,        // óßÑ Γ¿»-Γ«»
  702.   errDoNotMatch,    // ¡Ñß«ó»áñÑ¡¿Ñ ¿¼¿Γ«»α¿ßΓáó¬¿
  703.   errInvalidFlag,   // ¡ÑóÑα¡δ⌐ Σ½áú ó맮óá »α«úαá¼¼δ
  704.   errBadSynchro,    // ¡ÑóÑα¡« ºáñá¡á ß¿¡σα«»«ß佬á
  705.   errBadImito,      // ¡ÑóÑα¡« ºáñá¡á ¿¼¿Γ«»α¿ßΓáó¬á
  706.   errTooFiewParm,   // ¼á½« »áαá¼ÑΓα«ó ó맮óá
  707.   errTooManyParm,   // ¼¡«ú« »áαá¼ÑΓα«ó ó맮óá
  708.   errBadKey,        // »½«σ«⌐ Σá⌐½ ¬½ετá
  709.   errBadXCHT,        // »½«σ«⌐ Σá⌐½ ß Γáí½¿µÑ⌐ ºá¼Ñ¡
  710.   errInvalidOper,   // ¡ÑóÑα¡á∩ «»Ñαᵿ∩
  711.   errSourceFailure, // «Φ¿í¬á ¡á Σá⌐½Ñ-¿ßΓ«τ¡¿¬Ñ
  712.   errTargetFailure, // «Φ¿í¬á ¡á Σá⌐½Ñ-»α¿Ñ¼¡¿¬Ñ
  713.   errRenameFailure, // «Φ¿í¬á »α¿ »ÑαÑ¿¼Ñ¡«óá¡¿¿
  714.   errDeleteFailure  // «Φ¿í¬á »α¿ πñá½Ñ¡¿¿ ¿ßσ. Σá⌐½á
  715. } errList;
  716.  
  717. unsigned char chtab[1024];
  718.  
  719. Item    Key[32];    // αáºóÑα¡πΓδ⌐ ¬½ετ
  720.  
  721. Item    Synchro[2]=    // ß¿¡σα«»«ß佬á
  722. {
  723.   0UL,0UL
  724. };
  725.  
  726. Item    Imito[2]=
  727. {
  728.   0UL,0UL
  729. };
  730.  
  731. Item    _Imito;
  732.  
  733. errList code=O_K_;    // ¬«ñ óδσ«ñá
  734.  
  735. int    BackLink=  0;    // Φ¿Σα«óáΓ∞ ß Äæ
  736. int     ShowImito= 0;    // »«¬áºáΓ∞ ¿¼¿Γ«»α¿ßΓáó¬π
  737. int     CheckImito=0;    // »α«óÑα¿Γ∞ ¿¼¿Γ«»α¿ßΓáó¬π
  738. int     Operation= 0;    // ºáΦ¿Σα«óá¡¿Ñ
  739. int    ParmCount= 0;   // ßτÑΓτ¿¬ »áαá¼ÑΓα«ó
  740. int     Deletion=  0;    // πñá½Ñ¡¿Ñ ¿ßσ«ñ¡¿¬á
  741.  
  742. char    *KeyFile=  NULL;// Σá⌐½ ¬½ετá
  743. char    *ChtFile=  NULL;// Σá⌐½ Γáí½¿µδ ºá¼Ñ¡
  744. char    *InFile=   NULL;// ¿ßσ«ñ¡δ⌐ Σá⌐½
  745. char    *OutFile=  NULL;// Σá⌐½ αѺπ½∞ΓáΓá
  746.  
  747. // Åα«Γ«Γ¿»δ Σπ¡¬µ¿⌐
  748.  
  749. errList setParam        (int argc, char **argv);
  750. errList    SignalError     (errList errType,
  751.              char *errPlace);
  752. errList loadCht        (void);
  753. errList loadKey        (void);
  754. errList    execute         (void);
  755.  
  756. // â½áó¡á∩ »α«úαἼᠼ«ñπ½∩
  757.  
  758. errList    main(int argc, char *argv[])
  759. {
  760.   unsigned short i;
  761.  
  762.   printf("Åα«úαá¼¼á Φ¿Σα«óá¡¿∩ ñá¡¡δσ ß »«¼«Θ∞ε "
  763.      "¬α¿»Γ«úαáΣ¿τÑ߬«ú« á½ú«α¿Γ¼á âÄæÆ 28147-89\n"
  764.      "æ«ßΓáó¿½ Ç.₧. é¿¡«¬πα«ó, ¿ε¡∞ 1994 ú«ñá,"
  765.      " ßó«í«ñ¡«Ñ ¿ß»«½∞º«óá¡¿Ñ ¿ ¬«»¿α«óá¡¿Ñ\n");
  766.  
  767. // ¥Γ«Γ µ¿¬½ ßΓα«¿Γ Γα¿ó¿á½∞¡πε Γáí½¿µπ ºá¼Ñ¡
  768.   for (i=0; i<1024; i++) chtab[i]=i;
  769. // ôñ὿ΓÑ Ñú«, Ñß½¿ íπñÑΓÑ ¿¡¿µ¿á½¿º¿α«óáΓ∞  chtab
  770.  
  771.   return
  772.       (code=setParam(argc,argv))!=O_K_ ? code :
  773.     !InFile ? SignalError(errTooFiewParm,NULL) :
  774.       (ChtFile && loadCht() != O_K_) ?
  775.               SignalError(errBadXCHT,ChtFile) :
  776.         (KeyFile && loadKey() != O_K_) ?
  777.               SignalError(errBadKey,KeyFile) :
  778.           execute();
  779. }
  780.  
  781. // πßΓá¡«ó¬á αѪ¿¼«ó ß«ú½áß¡« Σ½áúá¼ ó맮óá
  782.  
  783. errList    setParam(int argc, char **argv)
  784. {
  785.   for ( ; ++argv,--argc; )    // »α«ß¼«Γα áαúπ¼Ñ¡Γ«ó
  786.   {
  787.     char *c;
  788.  
  789.     if (**argv=='/')    // ¬½ετ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿
  790.       switch (toupper(*(*argv+1)))  // óδí«α »« íπ¬óÑ
  791.       {
  792.       case 'D': Deletion=1;    break;
  793.       case 'B': BackLink=1;    break;
  794.       case 'N': BackLink=0;     break;
  795.       case 'K': KeyFile=*argv+2;break;
  796.       case 'C': ChtFile=*argv+2;break;
  797.       case 'S':
  798.     if (Synchro[0]=strtoul(*argv+2,&c,16),*c)
  799.       return SignalError(errBadSynchro,*argv+2),1;
  800.     break;
  801.       case 'I':
  802.     if (*(*argv+2))
  803.       if (_Imito=strtoul(*argv+2,&c,16),*c)
  804.         return SignalError(errBadImito,*argv+2);
  805.       else CheckImito=ShowImito=1;
  806.     else  ShowImito=1;
  807.     break;
  808.       default:
  809.     return  SignalError(errInvalidFlag,*argv);
  810.       }
  811.     else switch(ParmCount++)    // ñαπú«⌐ áαúπ¼Ñ¡Γ
  812.     {
  813.       default:
  814.     return  SignalError(errTooManyParm,*argv);
  815.       case 0:            // ñѬ«ñ¿απѼ Σπ¡¬µ¿ε
  816.     if (*(*argv+1))         // ¡Ñ «ñ¡á íπ¬óá
  817.       return SignalError(errInvalidOper,*argv);
  818.     switch(toupper(**argv)) // τΓ« ºá íπ¬óá ?
  819.     {
  820.       default:              // «Φ¿í¬á
  821.         return SignalError(errInvalidOper,*argv);
  822.       case 'D': Operation=1;// αáßΦ¿Σα«óá¡¿Ñ
  823.       case 'E':;            // ºáΦ¿Σα«óá¡¿Ñ
  824.     }
  825.     break;
  826.       case 1:            // «»αÑñѽ∩Ѽ ¿ßΓ«τ¡¿¬
  827.     InFile=*argv;    break;
  828.       case 2:            // «»αÑñѽ∩Ѽ »α¿Ñ¼¡¿¬
  829.     OutFile=*argv;
  830.     }
  831.   }
  832.   return O_K_;
  833. }
  834.  
  835. // çáúαπº¬á Γáí½¿µδ ºá¼Ñ¡
  836.  
  837. errList loadCht(void)
  838. {
  839.   int    handle,FileSize;
  840.   unsigned char  buffer[128];
  841.  
  842.   if ((handle=open(ChtFile,O_RDONLY))==-1 ||
  843.        ((FileSize=filelength(handle)) != 128 &&
  844.                   FileSize != 1024) ||
  845.     read(handle,
  846.       FileSize==128 ? buffer : chtab,FileSize)==-1)
  847.     return errBadKey;
  848.  
  849.   if (FileSize == 128) ExpCht(buffer,chtab);
  850.   close(handle);
  851.   return O_K_;
  852. }
  853.  
  854. // çáúαπº¬á ¬½ετá
  855.  
  856. errList loadKey(void)
  857. {
  858.   int    handle,FileSize;
  859.   unsigned char  buffer[32];
  860.  
  861.   if ((handle=open(KeyFile,O_RDONLY))==-1 ||
  862.        ((FileSize=filelength(handle)) != 32 &&
  863.                   FileSize != 128) ||
  864.       read(handle, FileSize==32 ?
  865.             (void*) buffer : (void*) Key, FileSize)==-1)
  866.     return errBadKey;
  867.  
  868.   if (FileSize==32) ExpKey31(buffer,Key);
  869.   close(handle);
  870.   return O_K_;
  871. }
  872.  
  873. //  ÄßπΘÑßΓó½Ñ¡¿Ñ Φ¿Σα«óá¡¿∩
  874.  
  875. errList execute(void)
  876. {
  877.   int inHandle,outHandle,same;
  878.   long FileSize;
  879.   char buffer[BUFFER_SIZE];
  880.  
  881. // »«ñú«Γ«ó¬á Σá⌐½«ó
  882.   simple(Key,Synchro,chtab,1);
  883.   if (same=!OutFile)
  884.     OutFile="$$$$$$$$.$$$";
  885.  
  886.   if((inHandle=open(InFile,O_RDONLY|O_BINARY))==-1 ||
  887.      (FileSize=filelength(inHandle))== -1)
  888.     return SignalError(errSourceFailure,InFile);
  889.   if((outHandle=open(OutFile,
  890.          O_WRONLY|O_CREAT|O_BINARY))==-1)
  891.     return SignalError(errTargetFailure,OutFile);
  892.   printf("%sΦ¿Σα«óá¡¿Ñ Σá⌐½á %s\n",
  893.     Operation ? "Éáß" : "çá", InFile);
  894.  
  895. // µ¿¬½ Φ¿Σα«óá¡¿∩
  896.   for ( ; FileSize>0 ; FileSize-=BUFFER_SIZE)
  897.   {
  898.     unsigned short quant=min(BUFFER_SIZE,FileSize),
  899.       blocks=(quant+sizeof(CrBlock)-1)/sizeof(CrBlock);
  900.  
  901.     if (read(inHandle,buffer, quant) == -1)
  902.       return SignalError(errSourceFailure,InFile);
  903.     if (!Operation && ShowImito)
  904.     {
  905.       if (FileSize % 8)
  906.     setmem(buffer+FileSize,8-FileSize % 8,0);
  907.       imito (Key,Imito,chtab,buffer,blocks);
  908.     }
  909.     (BackLink ? Operation ? gammaLD : gammaLE : gamma)
  910.      (Key,Synchro,chtab,buffer,blocks);
  911.     if (Operation && ShowImito)
  912.     {
  913.       if (FileSize % 8)
  914.     setmem(buffer+FileSize,8-FileSize % 8,0);
  915.       imito (Key,Imito,chtab,buffer,blocks);
  916.     }
  917.     if (write(outHandle,buffer, quant) == -1)
  918.       return SignalError(errTargetFailure,OutFile);
  919.   }
  920.  
  921. // ºáóÑαΦáεΘ¿Ñ ñÑ⌐ßΓó¿∩
  922.   close(inHandle);
  923.   close(outHandle);
  924.   if(ShowImito)
  925.   {
  926.     printf("ê¼¿Γ«»α¿ßΓáó¬á");
  927.     if(CheckImito)
  928.       printf(" %s ß«ó»áñáÑΓ !\n",
  929.      Imito[1]==_Imito ? "" : " ìà ");
  930.     else
  931.       printf("=%lx\n",Imito[1]);
  932.   }
  933.   if (Deletion || same)
  934.   {
  935.     if (unlink(InFile)==-1)
  936.       return SignalError(errDeleteFailure,InFile);
  937.     if (same && rename(OutFile,InFile)==-1)
  938.       return SignalError(errRenameFailure,InFile);
  939.   }
  940.   return O_K_;
  941. }
  942.  
  943. // éδñáτá ß««íΘÑ¡¿∩ «í «Φ¿í¬Ñ
  944.  
  945. errList    SignalError(errList errType, char *errPlace)
  946. {
  947.   char *errText[]=
  948.   {
  949.   "ìÑóÑα¡δ⌐ Σ½áú ó맮óá α«úαá¼¼δ - %s\n",
  950.   "ìÑóÑα¡« ºáñá¡á ß¿¡σα«»«ß佬á - %s\n",
  951.   "ìÑóÑα¡« ºáñá¡á ¿¼¿Γ«»α¿ßΓáó¬á - %s\n",
  952.   "ìÑ«íσ«ñ¿¼ ¬«ñ Σπ¡¬µ¿¿ ¿ ¿¼∩ Φ¿ΣαπѼ«ú« Σá⌐½á\n",
  953.   "ï¿Φ¡¿⌐ »áαá¼ÑΓα ó맮óá - %s\n",
  954.   "ìÑóÑα¡« ºáñá¡ Σá⌐½ ß ¬½ετ«¼ - %s\n",
  955.   "ìÑóÑα¡« ºáñá¡ Σá⌐½ ß Γáí½¿µÑ⌐ ºá¼Ñ¡ - %s\n",
  956.   "ìÑóÑα¡« ºáñá¡á óδ»«½¡∩Ѽá∩ «»Ñαᵿ∩ - %s "
  957.                   "(¡πª¡« E ¿½¿ D)\n",
  958.   "ÄΦ¿í¬á ¡á ¿ßσ«ñ¡«¼ Σá⌐½Ñ - %s\n",
  959.   "ÄΦ¿í¬á ¡á Σá⌐½Ñ αѺπ½∞ΓáΓá - %s\n",
  960.   "ìÑ󫺼«ª¡« »ÑαÑ¿¼Ñ¡«óáΓ∞ Σá⌐½ $$$$$$$$.$$$ ó %s\n",
  961.   "ìÑ󫺼«ª¡« πñ὿Γ∞ Σá⌐½ %s\n"
  962.   };
  963.   printf(errText[errType-2],errPlace);
  964.   return errType;
  965. }
  966. ï¿ßΓ¿¡ú 11
  967.  
  968. .AUTODEPEND
  969.  
  970. # Ä»αÑñѽѡ¿∩ Γαá¡ß½∩Γ«αá, áßßѼí½Ñαá, ¬«¼»«¡«óΘ¿¬á
  971. CC = bcc +CRYPTOR.CFG
  972. TASM = TASM /MX /ZI /O
  973. TLINK = tlink
  974.  
  975. # ìà∩ó¡δÑ »αáó¿½á
  976. .c.obj:
  977.   $(CC) -c {$< }
  978.  
  979. .cpp.obj:
  980.   $(CC) -c {$< }
  981.  
  982. # Ä»αÑñѽѡ¡δÑ ß¿¼ó«½δ
  983.  
  984. EXE_dependencies =  \
  985.   cryptor.obj \
  986.   expcht.obj \
  987.   expkey31.obj \
  988.   gost.obj \
  989.   simple.obj \
  990.   gamma.obj \
  991.   gammald.obj \
  992.   gammale.obj \
  993.   imito.obj
  994.  
  995. # ƒó¡δÑ »αáó¿½á
  996. cryptor.exe: cryptor.cfg $(EXE_dependencies)
  997.   $(TLINK) /v/x/c/LC:\BC\LIB @&&|
  998. c0c.obj+
  999. cryptor.obj+
  1000. expcht.obj+
  1001. expkey31.obj+
  1002. gost.obj+
  1003. simple.obj+
  1004. gamma.obj+
  1005. gammald.obj+
  1006. gammale.obj+
  1007. imito.obj
  1008. cryptor
  1009.         # no map file
  1010. emu.lib+
  1011. mathc.lib+
  1012. cc.lib
  1013. |
  1014.  
  1015. # ê¡ñ¿ó¿ñπá½∞¡δÑ ºáó¿ß¿¼«ßΓ¿
  1016. cryptor.obj: cryptor.c
  1017.  
  1018. expcht.obj: expcht.c
  1019.  
  1020. expkey31.obj: expkey31.c
  1021.  
  1022. gost.obj: gost.asm
  1023.     $(TASM) GOST.ASM,GOST.OBJ
  1024.  
  1025. simple.obj: simple.asm
  1026.         $(TASM) SIMPLE.ASM,SIMPLE.OBJ
  1027.  
  1028. gamma.obj: gamma.asm
  1029.     $(TASM) GAMMA.ASM,GAMMA.OBJ
  1030.  
  1031. gammald.obj: gammald.asm
  1032.     $(TASM) GAMMALD.ASM,GAMMALD.OBJ
  1033.  
  1034. gammale.obj: gammale.asm
  1035.     $(TASM) GAMMALE.ASM,GAMMALE.OBJ
  1036.  
  1037. imito.obj: imito.asm
  1038.     $(TASM) IMITO.ASM,IMITO.OBJ
  1039.  
  1040. #        *Compiler Configuration File*
  1041. cryptor.cfg: cryptor.mak
  1042.   copy &&|
  1043. -mc
  1044. -C
  1045. -v
  1046. -y
  1047. -IC:\BC\INCLUDE
  1048. -LC:\BC\LIB
  1049. | cryptor.cfg
  1050.  
  1051.  
  1052.