12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- MODULE CryptoDES;
- IMPORT S := SYSTEM, U := CryptoUtils, Ciphers := CryptoCiphers;
- CONST
- Mask01 = S.VAL(SET32, 2863311530);
- Mask02 = S.VAL(SET32, 858993459);
- Mask04 = S.VAL(SET32, 252645135);
- Mask08 = S.VAL(SET32, 16711935);
- Mask16 = S.VAL(SET32, 65535);
- TYPE
- Sandbox = ARRAY 64 OF SET32;
- BitSwap = ARRAY 16 OF SET32;
- Ind4* = RECORD
- a-, b-, c-, d-: LONGINT;
- END;
- Cipher* = OBJECT (Ciphers.Cipher)
- VAR
- ske, skd: ARRAY 32 OF SET32;
- ki: LONGINT;
- ivx, ivy: SET32;
- PROCEDURE ^ InitKey*(CONST src: ARRAY OF CHAR; keybits: LONGINT);
- PROCEDURE ^ SetIV*(CONST src: ARRAY OF CHAR; mode: SHORTINT);
- PROCEDURE ^ Encrypt*(VAR buf: ARRAY OF CHAR; ofs, len: LONGINT);
- PROCEDURE ^ Decrypt*(VAR buf: ARRAY OF CHAR; ofs, len: LONGINT);
- PROCEDURE ^ RoundE*(VAR x, y: SET32);
- PROCEDURE ^ RoundD*(VAR x, y: SET32);
- PROCEDURE ^ & Init*;
- END Cipher;
- VAR
- sb1-, sb2-, sb3-, sb4-, sb5-, sb6-, sb7-, sb8-: Sandbox;
- LHs, RHs: BitSwap;
- PROCEDURE ^ Split*(x: SET32; VAR i4: Ind4);
- PROCEDURE ^ NewCipher*(): Ciphers.Cipher;
- PROCEDURE ^ IP*(VAR x, y: SET32);
- PROCEDURE ^ FP*(VAR x, y: SET32);
- PROCEDURE ^ ComputeSubkeys*(x, y: SET32; VAR sk: ARRAY OF SET32; ofs: LONGINT);
- PROCEDURE ^ InitializeSandboxes;
- BEGIN
- END CryptoDES.
|