DM4BACbyDECLARE SUB SecureEncryptAndWrite (Game$, zkey#, pB#, Pw#, Who%) DECLARE SUB SecureReadAndDecrypt (Game$, zkey#, pB#, Pw#, Who%) DECLARE FUNCTION Q% (n%) DECLARE FUNCTION ksgDecrypt$ (k#, Encrypted$) DECLARE FUNCTION ksgEncrypt$ (k#, Clear$) CLS PRINT "DM4BAC-InputOutput" PRINT "---------------" PRINT "This consists of 1) a driver which can be used to debug" PRINT "the IO routines and 2) attendent simulated logic routines" 1 : PRINT "" DEFSTR A-Z ' Debugging DIM MyErr AS INTEGER: ' Debugging CONST debugW = "Fuzzy" CONST debugB = "Wuzzy" '============================================= DIM SHARED Board(8, 8) AS INTEGER' column, row DIM SHARED WBoard(8, 8) AS INTEGER' column, row DIM SHARED BBoard(8, 8) AS INTEGER' column, row DIM SHARED pwW AS STRING * 15, pwB AS STRING * 15 '============================================= DIM i AS INTEGER, j AS INTEGER, c AS INTEGER MyErr = 0: ON ERROR GOTO GetMyErr OPEN "DM4BAC.ksg" FOR INPUT AS #1: CLOSE ON ERROR GOTO 0 IF MyErr = 0 THEN GOTO Test2 Test1: LSET pwW = debugW: RSET pwB = debugB FOR i = 1 TO 8: FOR j = 1 TO 8 c% = c% + 3: 'just test numbers - garbage Board(i, j) = Q(c): WBoard(i, j) = Q(c + 1): BBoard(i, j) = Q(c + 2) NEXT j: NEXT i CALL SecureEncryptAndWrite("DM4BAC", 123, 456, 789, 3) RUN 1 Test2: CALL SecureReadAndDecrypt("DM4BAC", 123, pB#, Pw#, Who%) IF pB# <> 456 THEN STOP: 'bug IF Pw# <> 789 THEN STOP: 'bug IF Who% <> 3 THEN STOP: 'bug FOR i = 1 TO 8: FOR j = 1 TO 8 c% = c% + 3: 'just test numbers - garbage IF Board(i, j) <> Q(c) THEN STOP: 'bug IF WBoard(i, j) <> Q(c + 1) THEN STOP: 'bug IF BBoard(i, j) <> Q(c + 2) THEN STOP: 'bug NEXT j: NEXT i Test$ = pwW: LSET Test$ = debugW: IF Test$ <> pwW THEN STOP: 'bug Test$ = pwB: RSET Test$ = debugB: IF Test$ <> pwB THEN STOP: 'bug LINE INPUT "Success! Press Enter to exit: "; x$ IF x$ <> "" THEN STOP KILL "DM4BAC.ksg" SYSTEM GetMyErr: MyErr = ERR RESUME NEXT FUNCTION ksgDecrypt$ (k#, Encrypted$) DIM ktest AS STRING * 10 LSET ktest = STR$(k#) IF LEFT$(Encrypted$, 10) <> ktest THEN STOP: 'bug ksgDecrypt$ = RIGHT$(Encrypted$, LEN(Encrypted$) - 10) END FUNCTION FUNCTION ksgEncrypt$ (k#, Clear$) DIM ktest AS STRING * 10 LSET ktest = STR$(k#) ksgEncrypt$ = ktest + Clear$ END FUNCTION FUNCTION Q% (n%) y% = RND(-119 * n%) 'Ensure there are plenty of zeros to test packing IF RND < .8 THEN Q% = 0: EXIT FUNCTION 'Otherwise, just put some pieces in range IF RND < .5 THEN Q% = -1 - INT(8 * RND) ELSE Q% = 1 + INT(8 * RND) END IF END FUNCTION SUB SecureEncryptAndWrite (Game$, zkey#, pB#, Pw#, Who%) DIM m AS STRING m = LTRIM$(STR$(pB#)) + "|" m = m + LTRIM$(STR$(Pw#)) + "|" m = m + LTRIM$(STR$(Who%)) + "|" DIM i AS INTEGER, j AS INTEGER FOR i = 1 TO 8: FOR j = 1 TO 8 m = m + STR$(Board(i, j)) m = m + STR$(WBoard(i, j)) m = m + STR$(BBoard(i, j)) NEXT j: NEXT i m = m + pwW + pwB w$ = ksgEncrypt(zkey#, m) DIM ff AS INTEGER: ff = FREEFILE OPEN Game$ + ".ksg" FOR OUTPUT AS #ff PRINT #ff, w$ CLOSE #ff END SUB SUB SecureReadAndDecrypt (Game$, zkey#, pB#, Pw#, Who%) DIM ff AS INTEGER: ff = FREEFILE OPEN Game$ + ".ksg" FOR INPUT AS #ff LINE INPUT #ff, l$ CLOSE #ff DIM m AS STRING, y AS INTEGER m = ksgDecrypt(zkey#, l$) y = INSTR(m, "|"): pB# = VAL(LEFT$(m, y - 1)): m = RIGHT$(m, LEN(m) - y) y = INSTR(m, "|"): Pw# = VAL(LEFT$(m, y - 1)): m = RIGHT$(m, LEN(m) - y) y = INSTR(m, "|"): Who% = VAL(LEFT$(m, y - 1)): m = RIGHT$(m, LEN(m) - y) DIM i AS INTEGER, j AS INTEGER y = 1 FOR i = 1 TO 8: FOR j = 1 TO 8 Board(i, j) = VAL(MID$(m, y, 2)) WBoard(i, j) = VAL(MID$(m, y + 2, 2)) BBoard(i, j) = VAL(MID$(m, y + 4, 2)) y = y + 6 NEXT j: NEXT i pwW = MID$(m, LEN(m$) - 29, 15): pwB = RIGHT$(m, 15) END SUB
from IP address 68.98.164.60 |
| Response Title | Author and Date |
| Upgraded | on May 22 |