現在、uint64_t が保持できる数よりも大きな数を処理する必要がある暗号化コードを C で作成しています。(HDCP 認証を行うためのもので、暗号値の 1 つが 84 ビットです)
これを行う最良の方法は何ですか?格納する必要がある変数の 1 つが 84 ビット長です。下位 64 ビットに uint64_t を 1 つ、上位 20 ビットに uint32_t を 1 つ使用する必要がありますか? これは私にはハックのように思えますが、特に構造体に格納するためのより良い解決策があるかどうかはわかりません。
理想的な代替手段は、uint64_t のようなカスタム データ型を宣言することですが、代わりに 84 ビット長で、同じように動作します。これは可能ですか?libc がビット幅が 8 の倍数ではない変数を処理できるかどうかはわかりませんが、カスタムのビット幅データ型を宣言することがどれほど実現可能かはわかりませんが、88 ビット型はそのために機能する可能性があります。
編集: uint128_t を確認しましたが、clang の C99 モードには存在しないようです。これに対して、標準的な算術演算とビット操作を行います。これは、暗号コードに関連付けられた標準的なシバンです。