バイト配列を生成unsigned * char
し、そのデータを fwrite を使用してワイヤレス ストリーム経由で送信するプログラムがあります。
そのバイト配列を圧縮して別のバイト配列に暗号化したいのですが、組み込みシステムでコードを実行しているので、新しいライブラリをロードしたくありません。圧縮関数と暗号化関数を自分で書きたいと思います。
言い換えれば、私のプログラムは次のとおりです。
void send(STREAM* s, unsigned* char byteArr) {
fwrite(s, byteArr);
}
代わりに、関数を作成したいと思います。
void send(STREAM* s, unsigned* char byteArr) {
unsgiend* char compressedArr = compressCharArr(byteArr);
unsigned* char encryptedArr = encryptCharArr(compressedArr)
fwrite(s, encryptedArr);
}
unsigned* char encryptedArr(unsigned* char byteArr) {
// make the encrypted byte array (?)
}
unsigned* char compressedArr (unsigned* char byteArr) {
// make the compressed byte array (?)
}
私の質問は、C でこれを達成するために自分で書き出せる簡単なアルゴリズムは何ですか? 私は、標準の C コードのみを使用し、ライブラリを使用せず、数学、for ループなどのみを使用することを好みます。
暗号化に関しては、暗号化には通信の両端でキー/パスワードが必要であることを理解しています。キーが共有されており、対称暗号化を使用していると仮定しましょう。
zip、7zip、gzip と同じアルゴリズムを使用してもかまいません。これらの圧縮システムには暗号化/パスワード保護も含まれていることは知っています。ライブラリやDLLなどを組み込みシステムに挿入せずに簡単に実装する方法がわかりません。
PS - 私は自分のコードの近くにいないので、私の構文は fwrite() でオフになっている可能性があります。私のコーディング例が私の意図を明確に示していることを願っています。
追加: Cコードは「Atmega168」と呼ばれるチップで実行されていることを言及しておきます...ライブラリを使用することが唯一の確実な方法である場合、このタイプのチップ用に最適化されたライブラリを推奨できますか? http://www.atmel.com/devices/atmega168.aspx