51 lines
1.5 KiB
Markdown
51 lines
1.5 KiB
Markdown
# Validation
|
|
|
|
The reconstructed sources were checked in two ways.
|
|
|
|
## 1. Header/API syntax check
|
|
|
|
`des.c`, `undes.c` and the common support compile syntactically against the
|
|
actual `crypt.h` from the supplied `cryptl99.zip`. There are no remaining
|
|
placeholder CRYPTLIB declarations.
|
|
|
|
## 2. Full CRYPTLIB round-trip on a modern compiler
|
|
|
|
For a behavioural sanity check, the supplied CRYPTLIB 0.99 source and libdes
|
|
3.14 source were compiled with GCC 14.2 together with the reconstruction.
|
|
|
|
A binary test file was then processed as:
|
|
|
|
```text
|
|
plain.bin -> des_v2 -> encrypted.bin -> undes_v2 -> roundtrip.bin
|
|
```
|
|
|
|
`plain.bin` and `roundtrip.bin` compare byte-for-byte equal.
|
|
|
|
The generated single-block encrypted file has the expected size:
|
|
|
|
```text
|
|
4 version
|
|
4 IV
|
|
256 password-check block
|
|
16384 encrypted data block
|
|
-----
|
|
16648 bytes total
|
|
```
|
|
|
|
The prefix begins with `75 27 00 00`, i.e. file version `0x00002775` in the
|
|
little-endian format used by the DOS executable.
|
|
|
|
A second test with an incorrect password exits with status 1 and prints the
|
|
same executable string:
|
|
|
|
`Password is not correct, no decryption possible`
|
|
|
|
## Scope of this validation
|
|
|
|
This confirms that the reconstructed control flow is internally consistent
|
|
with the supplied CRYPTLIB source. It does **not** prove that a modern GCC
|
|
build produces ciphertext byte-for-byte identical to the original Turbo C
|
|
build. The strongest compatibility test would be to decrypt an actual file
|
|
created by the 1998 `des.exe`, or run the original executable in a DOS
|
|
environment and compare outputs.
|