Чтение онлайн

ЖАНРЫ

Магнитные карты и ПК
Шрифт:

Программа LUHN.BAS способна рассчитать эту дополнительную цифру вне зависимости от количества цифр (четного или нечетного) номера, который требуется защитить.

10 REM — LUHN.BAS —

20 KEY OFF: CLS

30 CLEAR: PRINT: PRINT "Введите цифровые данные, которые требуют обеспечения безопасности": INPUT N$

40 L=LEN(N$): DIM N(L+1)

50 FOR F=1 TO L

60 C$=MID$(N$,F,1): C=VAL(C$): N(F)=C

70 NEXT F

80 IF (L/2) — INT(L/2) =0 THEN 200

90 T=0: FOR F=1 TO L STEP 2

100 C=2*N(F): IF C>=10 THEN C=C-9

110 T=T+C: NEXT F

120 FOR F=2 TO L-1 STEP 2

130 T=T+N(F): NEXT F

140 IF T>=10 THEN T=T-10: GOTO 140

150 N=10-T: IF N=10 THEN N=0

160 N(L+1)=N

170 CLS: FOR F=1 TO L+1

180 PRINT N(F);: NEXT F

190 PRINT: GOTO 30

200 T=0: FOR F=2 TO L STEP 2

210 C=2*N(F): IF C>=10 THEN C=C-9

220 T=T+C: NEXT F

230 FOR F=1 TO L-1 STEP 2

240 T=T+N(F):NEXT F

250 IF T>=10 THEN T=T-10: GOTO 250

260 N=10-T: IF N=10 THEN N=0

270 GOTO 160

280 REM (c)1996 Patrick GUEULLE

Определенный

таким образом ключ добавляется в конце защищаемого номера. Полученная при этом последовательность цифр успешно проходит проверку, производимую программой LUHNCHK (см. главу 3).

Это дает читателям возможность проверить (при повторном считывании) целостность данных, которые они закодировали на своих картах.

ПРОГРАММА РАСЧЕТА LRC

Символ LRC в принципе должен кодироваться после флажка end каждой дорожки вслед за проверкой нечетности и расчетом контрольного ключа с целью обеспечения последнего уровня безопасности.

Программа LRCMAG.BAS, как и CREMAG, ждет введения с помощью клавиатуры всех данных, начиная с флажка start и до флажка end включительно.

10 REM — LRCMAG. BAS —

20 KEY OFF: CLS

30 PRINT "Введите данные для кодирования"

40 PRINT "затем нажать ENTER"

50 А$=""

60 INPUT В$

70 IF В$ = "" THEN 100

80 А$=А$+В$

90 GOTO 60

100 C$=""

110 FOR F=1 TO LEN(A$)

120 IF MID$(A$,F,1)="{" THEN 300

130 V=VAL(MID$(A$,F,1))

140 C$=C$+CHR$ (V)

150 NEXT F

160 L=0

170 FOR F=1 TO LEN(C$)

180 L=L XOR ASC(MID$(C$,F, 1))

190 NEXT F

200 PRINT "LRC ="

210 IF L=11 THEN PRINT "{start}": GOTO 280

220 IF L=13 THEN PRINT "{sep)": GOTO 280

230 IF L=15 THEN PRINT "{end}": GOTO 280

240 IF L=10 THEN PRINT "{10}": GOTO 280

250 IF L=12 THEN PRINT "{12}": GOTO 280

260 IF L=14 THEN PRINT "{14}": GOTO 280

270 PRINT L

280 END

300 F=F+1

310 IP MID$(A$,F,1) = "1" THEN 340

320 IF MID$(A$,F,1) = "s" THEN 390

330 IF MID$(A$,F,1)="e" THEN C$=C$+CHR$ (15): F=F+3: GOTO 430

340 F=F+1

350 IF MID$(A$,F, 1) = "0" THEN C$=C$+CHR$(10): F=F+1: GOTO 430

360 IF MID$(A$,F,1) = "2" THEN C$=C$+CHR$(12): F=F+1: GOTO 430

370 IF MID$(A$,F,1) = "4" THEN C$=C$+CHR$(14): F=F+1: GOTO 430

380 GOTO 130

390 F=F+1

400 IF HID$(A$,F,1) = "t" THEN C$=C$+CHR$ (11): F=F+4: GOTO 430

410 IF MID$ (A$,F, 1) ="e" THEN C$=C$+CHR$ (13): F=F+2: GOTO 430

420 CLS: PRINT "Ошибка!": BEEP: END

430 IF MID$(A$,F, 1)<>")" THEN 420

440 GOTO 150

450 REM (c)1996 Patrick GUEULLE

После

двойного нажатия на клавишу ENTER программа выдает символ, который надо вставить за флажком end во время ввода данных в программе кодирования CREMAG.

СТИРАНИЕ МАГНИТНЫХ КАРТ

Как и все магнитные носители, карты могут стираться практически неограниченное число раз. Самый простой способ стереть карту — произвести новую запись, которая затрет предыдущие данные.

Поделиться с друзьями: