Кpиптогpафия от папиpуса до компьютеpа



Шифры взбивания и стандарт DES - часть 2


'------программа шифрования взбиванием
     DEFINT I-N: DEFSTR S
     RANDOMIZE 231
     CLS:LOCATE 1, 1
     Lot = 5
     s$ = ""
     FOR i=1 TO 64:s$=s$+CHR$(65+25*RND):NEXT
     PRINT s$; " - text": sav = s$
     s$ = ""
     FOR i=1 TO 192: s$=s$+CHR$(255*RND): NEXT
     '---------------------шифрование
     FOR i = 0 TO Lot
     sc=MID$(ss,1+I*32,32)
     l=2^i:sl="": r=""
     FOR j = 1 TO 32
     kg=ASC(MID$(sc, j, 1))
     kl=ASC(MID$(s$, j, 1))
     kr=ASC(MID$(s$, j+32,1))
     sl = sl+ CHR$(kl XOR kr)
     sr = sr+ CHR$(kr XOR kg)
     NEXT
     s$=sr+RIGHT$(sl,l)+LEFT$(sl,32-l)
     NEXT
     '----------------------порча бита
     ss=CHR$(ASC(s$) XOR 4)+RIGHT$(s$,63)
     '-----------------печать шифровки

    

FOR i =1 TO 64
     k = ASC(MID$(s$, i, 1))
     DEF SEG=47114: POKE 2*i-2, k: DEF SEG
     NEXT
     LOCATE 2, 65: PRINT " - code"
     '---------------расшифровывание
     FOR i = Lot TO 0 STEP -1
     sc=MID$(s$, 1+i*32, 32): l=2^i
     s$=RIGHT$ (s$ ,32-
     l)+MID$ (s$, 33,l)+LEFT$ (s$, 32)
     sl = "": sr = ""
     FOR j = 1 TO 32
     kg = ASC(MID$(sc, j, 1))
     kl = ASC(MID$(ss, j, 1))
     kr = ASC(MID$(ss, j+32, 1))
     sl = sl+ CHR$(kl XOR kr XOR kg)
     sr = sr+ CHR$(kr XOR kg)
     NEXT
     ss = sl+sr
     NEXT
     FOR i =1 TO 64
     k = ASC(MID$(s$, i, 1))
     DEF SEG=47124: POKE 2*i-2,k: DEF SEG
     NEXT
     LOCATE 3, 65: PRINT " - text"
     n = 0
     FOR i =1 TO 64
     IF MID$ (s$, i, 1) =MID$(sav, i,1) THEN
     LOCATE 4, i: PRINT "+";: n = n+I
     ELSE
     LOCATE 4, i: PRINT "-";
     END IF
     NEXT
     LOCATE 6, 1: PRINT 64 - n; "errors"
     END




Содержание  Назад  Вперед