2017-01-28 7 views
0

私はpaillier cryptosystemを使ってランダムなデータを暗号化し、最初はバイト配列の形にしてから、大きな整数に変換します。バイト配列が負の大きな整数になると、復号化された数字と入力番号は異なります基本的に負の大きな整数では機能しません)。入力が正か負になるかをチェックせずにこの作業を行う方法はありますか?pailler暗号システムは、負の大きな整数を暗号化および復号化できますか?

+0

大きな整数をバイト配列に変換して戻しますか? – kennytm

+0

私はこの 'BigIntegerのM1 =新しいBigIntegerの(データ)のようなものを使用していました;'と 'm1.toByteArray()'が、BigIntegerのはいつも – LPepe

答えて

0

いいえ、すべてがnを法として計算されるため、負の数は使用できません。

はい、数値に変換した値がnより小さい値であれば、任意の配列を使用できます。

この場合、new BigInteger(1, plaintext)を使用すると、常に正の数になります。最初のパラメータは符号です。

特定の構造にはエンコードが必要な場合があります。最上位ビットはゼロのビット値と(>メッセージ - > Paillier暗号化 - >エンコード暗号文及び解読暗号文 - > Paillier暗号解読 - - >デコードmessage-> encode->数に変換)。

データを数値にエンコード/デコードする方法の例については、I2OSPとOS2IPを参照してください。

+0

おかげで、それが動作する方法ポジティブになるようマールテンBodewesが彼の答えで提案されているように私はそれを変更私がしたいように – LPepe

関連する問題