1

CでOpenSSLのBIGNUMライブラリを使用した一般的な暗号化実装があります。標準の復号化は正常に機能していますが、シャミアの秘密共有(SSS)も実装したいと思います。

私が遭遇した問題は、BIGNUMが整数のみをサポートし、SSSのラグランジュ補間の一部として、負の値を乗算する必要があることです。

これを行う方法はありますか?それ以外の場合:OpenSSLによって生成されたBIGNUMと対話できる限り、別の言語(python?)でSSSを実行できます

助言がありますか?TIA!

4

2 に答える 2

2

OpenSSL の BIGNUM 構造を見ると、 という名前のフラグが見つかりますneg。BIGNUM オブジェクトが負の数を表す場合は、neg1 に設定されます。また、bn_mul()関数は負の数による乗算を正しく処理します。したがって、OpenSSL を使用して SSS を実装できます。問題ありません。

于 2013-09-10T03:55:22.740 に答える
0

モジュラー演算 (グループを使用) は肯定的な結果しか提供しないので、非モジュラー演算を使用したいと思いますか? その場合、値が負かどうかを示す別の変数を保持するだけです。とにかく、正の乗算の結果は、符号ビットを除いて同じです。

可能な限りきれいな設計ではありませんが、いくつかの方法ではおそらくそれほど重要ではありません。符号 ( 、または)BNの値を保持する整数を除いて、メソッドを模倣する別のメソッドを作成できます。-101

于 2013-02-15T14:39:57.947 に答える