前にC++でchachaを実装したのですが、stateを16進数に変換してkey streamにするときにミスをしていたので、key streamのbyte数がおかしいことになっていました。それに今頃気がついたので、修正しました。
ミスっていた点は、144行目~150行目です。ここは追加した点ではあるのですが。
何をミスっていたかといえば、10進数を16進数char型に変換するところで0埋めしないので、例えば0bとなるところをbとしか出力しませんでした。
そういうわけで、0埋めするようにしました。これでkey streamがしっかり128文字になるようになりました。
いい加減keyとnonceのコードをなにかするので、はい。流石に正月三が日が終わるまでには・・・。
しかし、ぶっちゃけ、planetext recoveryできない気がしてきたので、マジでやばいです。偏りない気がする。