# SHA-256 48-bit-prefix collision report

## Answer

`collision.json` supplies two distinct 8-byte hexadecimal inputs:

- inputA: `0x000000000017211c`
- inputB: `0x00000000014060cc`

## Facts (recomputed locally)

SHA-256 of inputA is
`4e84dca19fa699674e41dc0ff0f92046577a96fd3bbc22ae6a036986dc268301`.

SHA-256 of inputB is
`4e84dca19fa67ad46fd0f73243c0081834a4767ce3fc91b0b4dade47ab574d2e`.

The first 12 hexadecimal characters of both digests are `4e84dca19fa6`, which is the same 48-bit most-significant prefix. The inputs differ.

The values were checked during search by computing SHA-256 again for both candidate byte strings. They can be independently reproduced with:

```sh
python3 - <<'PY'
import hashlib, json
v = json.load(open('collision.json'))
a = bytes.fromhex(v['inputA'][2:])
b = bytes.fromhex(v['inputB'][2:])
da, db = hashlib.sha256(a).digest(), hashlib.sha256(b).digest()
assert a != b
assert da[:6] == db[:6]
print(da.hex())
print(db.hex())
PY
```

## Inference

Because six bytes equal 48 bits, equality of `da[:6]` and `db[:6]` establishes the requested SHA-256 truncation collision for lambda = 24 (the task's 2*lambda-bit prefix).

## Uncertainty and unanswered questions

There is no claim that the complete 256-bit digests collide; the displayed full digests show that they do not. This report relies on the verifier using the stated convention: SHA-256 applied to the decoded hexadecimal bytes, followed by selection of the most-significant 48 bits.
