CryptoDES.SymU 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. MODULE CryptoDES;
  2. IMPORT S := SYSTEM, U := CryptoUtils, Ciphers := CryptoCiphers;
  3. CONST
  4. Mask01 = S.VAL(SET32, 2863311530);
  5. Mask02 = S.VAL(SET32, 858993459);
  6. Mask04 = S.VAL(SET32, 252645135);
  7. Mask08 = S.VAL(SET32, 16711935);
  8. Mask16 = S.VAL(SET32, 65535);
  9. TYPE
  10. Sandbox = ARRAY 64 OF SET32;
  11. BitSwap = ARRAY 16 OF SET32;
  12. Ind4* = RECORD
  13. a-, b-, c-, d-: LONGINT;
  14. END;
  15. Cipher* = OBJECT (Ciphers.Cipher)
  16. VAR
  17. ske, skd: ARRAY 32 OF SET32;
  18. ki: LONGINT;
  19. ivx, ivy: SET32;
  20. PROCEDURE ^ InitKey*(CONST src: ARRAY OF CHAR; keybits: LONGINT);
  21. PROCEDURE ^ SetIV*(CONST src: ARRAY OF CHAR; mode: SHORTINT);
  22. PROCEDURE ^ Encrypt*(VAR buf: ARRAY OF CHAR; ofs, len: LONGINT);
  23. PROCEDURE ^ Decrypt*(VAR buf: ARRAY OF CHAR; ofs, len: LONGINT);
  24. PROCEDURE ^ RoundE*(VAR x, y: SET32);
  25. PROCEDURE ^ RoundD*(VAR x, y: SET32);
  26. PROCEDURE ^ & Init*;
  27. END Cipher;
  28. VAR
  29. sb1-, sb2-, sb3-, sb4-, sb5-, sb6-, sb7-, sb8-: Sandbox;
  30. LHs, RHs: BitSwap;
  31. PROCEDURE ^ Split*(x: SET32; VAR i4: Ind4);
  32. PROCEDURE ^ NewCipher*(): Ciphers.Cipher;
  33. PROCEDURE ^ IP*(VAR x, y: SET32);
  34. PROCEDURE ^ FP*(VAR x, y: SET32);
  35. PROCEDURE ^ ComputeSubkeys*(x, y: SET32; VAR sk: ARRAY OF SET32; ofs: LONGINT);
  36. PROCEDURE ^ InitializeSandboxes;
  37. BEGIN
  38. END CryptoDES.