RustCrypto / stream-ciphers

Collection of stream cipher algorithms
255 stars 49 forks source link

hc-256: use `ptable` instead of `qtable` in `h2` function #324

Closed cdong1012 closed 1 year ago

cdong1012 commented 1 year ago

Fixing a small bug in the HC-256 stream cipher to use ptable instead of qtable for the h2 function. The code properly decrypts up to 0x1000 bytes, but it fails to decrypt data that comes afterward due to this bug.

Data encrypted by the original code can still be fully decrypted despite its length, but will fail to be decrypted by other HC-256 libraries.

cdong1012 commented 1 year ago

Seems like this is duplicate with #283. Should I rebase and update this PR to cipher_v0.5?

tarcieri commented 1 year ago

Oh wow, looks like #283 went by the wayside.

@cdong1012 #283 had quite a bit going on including adding an implementation of HC-128, which is what blocked merging it.

I think it would be good to just split out the HC-256 fixes for starters, possibly in this PR. You already have the qtable -> ptable fix, but it'd also be good to include the INIT_SIZE fix.

After that, I think HC-128 could be added in a separate PR.

tarcieri commented 1 year ago

Actually, let's go ahead and get this merged so it doesn't go by the wayside like #283