pycryptoを使ってPythonでいくつかのJS(SJCLライブラリを使用する)を書き直そうとしています。 は私がPythonでSJCL .frombitsを実装する
aes = new sjcl.cipher.aes(this.key);
bits = sjcl.codec.utf8String.toBits(text);
cipher = sjcl.mode.ccm.encrypt(aes, bits, iv);
cipherIV = sjcl.bitArray.concat(iv, cipher);
return sjcl.codec.base64.fromBits(cipherIV);
次のコードを実装する方法を考え出すのトラブルを抱えている私の問題は、暗号化ではありませんが、方法は、ライブラリはfromBits変換を処理します。
私たちの暗号プリミティブのほとんどは内部的に4バイトワードの配列を処理しますが、その多くは4バイトの倍数ではない引数を取ることができます。このライブラリは、(8ビットの倍数である必要はない)ビット配列を32ビットワードの配列としてエンコードします。ビットはビッグエンディアンで、一度に32ビットずつワードの配列にパックされます。ワードは倍精度浮動小数点数なので、余分なデータに適合します。私たちはこれを(プライベートで、おそらく変化する方法で)使用して、配列の最後の単語に実際に存在するビット数をコード化します。私に
これは連結運転中に流行になります私が懸念していた、付加的な情報のいくつかの並べ替えに追加ビット配列への変換を意味するようです。さらに、連結の後、結果はbase64ストリングとして戻されます。私はこれを複製するための適切な 'struct'パッキングパラメータが不明です。