0

楽しみのためにこれを行っていて、ウィキペディアで疑似コードを読んでいたところ、メッセージにビット「1」を追加してから、結果のメッセージ長モジュラス512に十分な「0」ビットを追加する前処理時に、448.次に、メッセージの長さをビット単位で 64 ビットのビッグ エンディアン整数として追加します。

わかった。「1」ビットだけを追加する方法がわかりませんが、128 (1000 0000) を追加することは可能かもしれませんが、結果のメッセージ長モジュラス 512 がすべてなしですでに 448 だった場合、それはうまくいきません。それらの余分な 0 です。その場合、少なくともバイトを処理する必要があるため、1 だけを追加する方法がわかりません。C#で可能ですか?

また、システムがデフォルトでリトルエンディアンであると信じているため、ビッグエンディアンの整数を追加する組み込みの方法はありますか。

4

2 に答える 2

2

メッセージが偶数バイトの場合にのみバイトを処理する必要があるように定義されています。メッセージの長さ (mod 64) が 56 の場合、1 バイトの 0b10000000 を追加し、その後に 63 の 0 バイト、その後に長さを追加します。それ以外の場合は、0b10000000 の 1 バイト、その後に 0 ~ 62 0 バイト、その後に長さを追加します。

于 2013-04-15T02:08:32.353 に答える
1

System.Collections のBitArrayクラスを確認してください。ctor オーバーロードの 1 つは、バイト配列などを取ります。

于 2013-04-15T02:10:51.167 に答える