• 締切済み

ビッグエンディアン環境で動作していたソフトウェア(暗号処理等を含む)を

ビッグエンディアン環境で動作していたソフトウェア(暗号処理等を含む)を急遽リトルエンディアンの環境へ移植することになりました(コンパイラ等もリトルエンディアン用)。 具体的には、SHA、RSA、DHなどのアルゴリズムを含み、入力データ(128Byte程度)に対する電子署名の生成や検証を行うソフトウェアです。 ここで、移植するために修正すべき箇所を特定したいのですが、どのようにすれば良いか教えていただけないでしょうか? (ビット演算や型変換なども多用しています) よろしくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

可能であれば, 「エンディアンを変換する」機能を作ってはさむのが一番簡単だと思う. ただし保証はしない. 本当に移植するんだとしたら, あきらめてすべてチェックするんだろうけど.... いちから作り直した方が早かったりして.

benizakura_1001
質問者

お礼

回答いただき、ありがとうございますm(__)m おっしゃるとおり、エンディアン変換が必要な個所にマクロ/関数をかませようと思っています。 ここで「必要な個所がどこか」が良く分からなくて。。。。 Byte型の変数や配列をByteのまま扱っているところは、基本的にそのままで良いと考えています。 それ以外の型の変数や配列なのですが、そのままの型で代入や演算等行っているところもそのままで良いと思っているのですが、間違いでしょうか? また、Byte以外の型の変数や配列(例えば、int型の配列N1[4])に対してキャストしつつ別のByte型配列の値(例えば、char型の配列N2[16])を代入するような場合、エンディアン変換が必要になると思うのですが、これも間違いでしょうか? 色々と書いてしまって申し訳ございませんが、ご教示いただけると助かります。

すると、全ての回答が全文表示されます。

関連するQ&A