1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | REM programma chifrovan/deshifrovan DIM x(n), y$(n), y1$( 255 ), x1( 255 ), yk$( 255 ), xk( 255 ), xkd( 255 ), ykd$( 255 ) n = 75 CLS 'формирование массива символов y$( 1 ) = "а": y$( 2 ) = "б": y$( 3 ) = "в": y$( 4 ) = "г": y$( 5 ) = "д" y$( 6 ) = "е" : y$( 7 ) = "ё": y$( 8 ) = "ж": y$( 9 ) = "з": y$( 10 ) = "и" y$( 11 ) = "й": y$( 12 ) = "к": y$( 13 ) = "л": y$( 14 ) = "м": y$( 15 ) = "н" y$( 16 ) = "о": y$( 17 ) = "п": y$( 18 ) = "р": y$( 19 ) = "с": y$( 20 ) = "т" y$( 21 ) = "у": y$( 22 ) = "ф": y$( 23 ) = "х": y$( 24 ) = "ц": y$( 25 ) = "ч" y$( 26 ) = "ш": y$( 27 ) = "щ": y$( 28 ) = "ъ": y$( 29 ) = "ы": y$( 30 ) = "ь" y$( 31 ) = "э": y$( 32 ) = "ю": y$( 33 ) = "я": y$( 34 ) = " ": y$( 35 ) = "-" y$( 36 ) = ".": y$( 37 ) = "?": y$( 38 ) = ",": y$( 39 ) = "!": y$( 40 ) = " " y$( 41 ) = ";": y$( 42 ) = ":": y$( 43 ) = " 1 ": y$( 44 ) = " 2 ": y$( 45 ) = " 3 " y$( 46 ) = " 4 ": y$( 47 ) = " 5 ": y$( 48 ) = " 6 ": y$( 49 ) = " 7 ": y$( 50 ) = " 8 " y$( 51 ) = " 9 ": y$( 52 ) = " 0 ": y$( 53 ) = "Й": y$( 54 ) = "К": y$( 55 ) = "Л": y$( 56 ) = "М" : y$( 57 ) = "Н": y$( 58 ) = "О": y$( 59 ) = "П": y$( 60 ) = "Р" y$( 61 ) = "С": y$( 62 ) = "Т": y$( 63 ) = "У": y$( 64 ) = "Ф": y$( 65 ) = "Х" y$( 66 ) = "Ц": y$( 67 ) = "Ч": y$( 68 ) = "Ш": y$( 69 ) = "Щ": y$( 60 ) = "Ъ" y$( 71 ) = "Ы": y$( 72 ) = "Ь": y$( 73 ) = "Э": y$( 74 ) = "Ю": y$( 75 ) = "Я" 'формирование массива кодов символов FOR i = 1 TO 75 x(i) = i + 4 NEXT i PRINT "введите: 1 - для шифрования; 2 - для дешифрования" INPUT "v= "; V IF V = 1 THEN GOTO 10 GOTO 20 10 PRINT "Работает программа шифрования" INPUT "введите текст, подлежащий шифрованию: "; s$ p = LEN(s$) 'подсчет количества символов в тексе ' выделение символов в тексе и формирование массива символов текста y1$(p) FOR i = 1 TO p y1$(i) = MID$(s$, i, 1 ): 'выделяется один i-ый символ из текста s$ NEXT i ' установление соответствия между элементами массива символов текста y1$(p) ' и элементами массива кодов символов x1(p) FOR j = 1 TO p FOR i = 1 TO n IF y1$(j) = y$(i) THEN x1(j) = x(i) NEXT i NEXT j 'печать на экран элементов массива символов и элементов массива кодов символов в соответствующих позициях экрана FOR j = 1 TO p LOCATE 5 , 3 * j + 2 PRINT y1$(j) FOR jj = 1 TO 500000 NEXT jj LOCATE 6 , 3 * j + 1 PRINT x1(j) NEXT j 'кодирование с ключом INPUT "введите ключ:"; k$ kl = LEN(k$) 'выделение символов в ключе и формирование массива символов ключа yk$(kl) LOCATE 23 , 5 PRINT "TIME 1 : "; TIME$ FOR i = 1 TO kl yk$(i) = MID$(k$, i, 1 ) NEXT i 'установление соответствия между элементами массива символов ключа и элементами массива кодов FOR j = 1 TO kl FOR i = 1 TO n IF yk$(j) = y$(i) THEN xk(j) = x(i) NEXT i NEXT j 'Печать элементов массива символов ключа и элементов массива кодов FOR j = 1 TO kl LOCATE 8 , 3 * j + 2 PRINT yk$(j) LOCATE 9 , 3 * j + 1 PRINT xk(j) NEXT j 'получение кода зашифрованного с ключом текста kl1 = 0 'случай, когда число символов в тексте больше числа символов в ключе FOR j = 1 TO p IF kl1 = kl THEN kl1 = 0 kl1 = kl1 + 1 xkd(j) = x1(j) + xk(kl1) LOCATE 11 , 3 * j + 1 PRINT xkd(j) NEXT j 'преобразование кода зашифрованного текста в последовательность символов FOR j = 1 TO p FOR i = 1 TO n IF xkd(j) = x(i) THEN y1$(j) = y$(i) NEXT i LOCATE 12 , 3 * j + 1 PRINT y1$(j) NEXT j LOCATE 23 , 25 PRINT "TIME 2 : "; TIME$ GOTO 30 20 PRINT "работает программа дешифрования" INPUT "введите код зашифрованного текста без пробелов: "; kod$ p = LEN(kod$) 'установление количества символов в коде текста 60 'формирование массива символов зашифрованного текста FOR i = 1 TO p ykd$(i) = MID$(kod$, i, 1 ) NEXT i 'формирование массива кодов символов зашифрованного текста FOR j = 1 TO p FOR i = 1 TO n IF ykd$(j) = y$(i) THEN x1(j) = x(i) NEXT i NEXT j INPUT "введите ключ: "; k$ kl = LEN(k$) 'количество символов в ключе ' выделение символов в ключе и формирование массива символов ключа yk$(kl) FOR i = 1 TO kl yk$(i) = MID$(k$, i, 1 ) NEXT i ' формирование массива кодов символов ключа xk(kl) FOR j = 1 TO kl FOR i = 1 TO n IF yk$(j) = y$(i) THEN xk(j) = x(i) NEXT i NEXT j ' получение дешифрованного с ключом текста kl1 = 0 FOR j = 1 TO p IF kl1 = kl THEN kl1 = 0 kl1 = kl1 + 1 xkd(j) = x1(j) - xk(kl1) NEXT j ' установление соответствия кодов выводимым символам в массиве символов кода FOR j = 1 TO p FOR i = 1 TO n IF xkd(j) = x(i) THEN y1$(j) = y$(i) NEXT i LOCATE 12 , 3 * j + 1 PRINT y1$(j) NEXT j 30 LOCATE 23 , 25 : PRINT "TIME 2 : "; TIME$ STOP |
Тестирование выполнено в программе QB64 ( Скачать )