Redo of #7800.
Bumping the random and crypto crates is not trivial. Both sets of crates
have had API changes which require manual updates.
AI use:
I wrote all of the code myself but used AI to figure out the new APIs.
AI explained SHAKE's block size and why the block_size() function
doesn't exist in the new crate. I confirmed the block size, which is
actually represented in the new types for SHAKE. `Shake128` is actually
`Shake<168>` - 168 is the block size. I cited Wikipedia as it lists the
SHAKE block size in bits.
I also used AI to figure out HMAC for SHA3.
Assisted-by: Codex:gpt-5.4