CでOpenSSLのBIGNUMライブラリを使用した一般的な暗号化実装があります。標準の復号化は正常に機能していますが、シャミアの秘密共有(SSS)も実装したいと思います。
私が遭遇した問題は、BIGNUMが整数のみをサポートし、SSSのラグランジュ補間の一部として、負の値を乗算する必要があることです。
これを行う方法はありますか?それ以外の場合:OpenSSLによって生成されたBIGNUMと対話できる限り、別の言語(python?)でSSSを実行できます 。
助言がありますか?TIA!
CでOpenSSLのBIGNUMライブラリを使用した一般的な暗号化実装があります。標準の復号化は正常に機能していますが、シャミアの秘密共有(SSS)も実装したいと思います。
私が遭遇した問題は、BIGNUMが整数のみをサポートし、SSSのラグランジュ補間の一部として、負の値を乗算する必要があることです。
これを行う方法はありますか?それ以外の場合:OpenSSLによって生成されたBIGNUMと対話できる限り、別の言語(python?)でSSSを実行できます 。
助言がありますか?TIA!
OpenSSL の BIGNUM 構造を見ると、 という名前のフラグが見つかりますneg
。BIGNUM オブジェクトが負の数を表す場合は、neg
1 に設定されます。また、bn_mul()
関数は負の数による乗算を正しく処理します。したがって、OpenSSL を使用して SSS を実装できます。問題ありません。
モジュラー演算 (グループを使用) は肯定的な結果しか提供しないので、非モジュラー演算を使用したいと思いますか? その場合、値が負かどうかを示す別の変数を保持するだけです。とにかく、正の乗算の結果は、符号ビットを除いて同じです。
可能な限りきれいな設計ではありませんが、いくつかの方法ではおそらくそれほど重要ではありません。符号 ( 、または)BN
の値を保持する整数を除いて、メソッドを模倣する別のメソッドを作成できます。-1
0
1