Магнитные карты и ПК
Шрифт:
Программа 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
Определенный
Это дает читателям возможность проверить (при повторном считывании) целостность данных, которые они закодировали на своих картах.
Символ 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.Как и все магнитные носители, карты могут стираться практически неограниченное число раз. Самый простой способ стереть карту — произвести новую запись, которая затрет предыдущие данные.