2

IAR IDE の C で Cortex M3 マイクロコントローラに XTEA 暗号化を実装しようとしていますが、これまでのところ暗号化復号化は機能していますが、問題に直面しています。Ascii 文字列をエンコードする必要がありますが、暗号化された文字列には文字列に 0x00 が含まれることがあります配列はヌル ターミネータとしてではなく、中間のどこかにあるため、文字列関数はこの余分な 0x00 のために文字列の正しい長さを取得しません。問題は、この文字列を GPRS 経由で送信する必要があることです。バックエンドも同じ種類の ASCII 文字列を使用しており、最後にのみ 0x00 を期待しています。ファームウェアでは、文字列送信の残りの部分も Null 終了であると想定しています。暗号化された文字列のこの 0x00 を他の値に置き換える方法はありますか?後でバックエンドでも簡単に再現できること、各 Encrypted String Array に 0x01 を追加するとします。これにより 0xff が 0x00 になる可能性があります。この 0x00 を削除する方法はありますか?

または、暗号化された文字列でゼロ以外の値を保証する、マイクロコントローラーで簡単に実装できる、アスキー文字列のその他の単純な暗号化アルゴリズム、バックエンドの担当者は、システムで使用されているアルゴリズムを持つことを主張します。AES アルゴリズムはゼロ以外の値を保証しますか?

4

3 に答える 3

1

新しいエンコーディング スキームを発明するよりも、既存のものを使用することを検討してください。(ドキュメントがより簡単になります。)

データがASCIIの場合、コードは 0 から 0x7F に制限されます。 Base64が最適な方法です。

于 2013-08-21T22:27:31.233 に答える
0

base64 またはその他のエンコード方法をいつでも使用できますが、提案されているように 0x00 をエスケープする方が良いと思います。

于 2013-08-21T22:07:19.397 に答える