2017-02-13 8 views
0

私はOpenSSLでBIGNUM機能を使用しようとしています。私は、次のテストプログラムを書いている:私は200001ゼロのと1を期待しながら、OpenSSLのBN_bn2decからの出力が間違っていますか?

BIGNUM someSSLInt; 

BN_init(&someSSLInt); 

BN_set_word(&someSSLInt, 10); 

for (unsigned i=0; i<100000; i++) { 
    BN_mul_word(&someSSLInt, 100) 
} 

char *sslstr=BN_bn2dec(&someSSLInt); 
printf("%s",sslstr); 

は残念ながら、私は、「のみ」3000ゼロの程度との1を取得します。同じコードを他のライブラリ(GMPやTommathなど)と比較すると、予想される結果が得られます。私は間違った方法でOpenSSLを使用していますか?

私はmacOSでバージョン1.0.2gを使用しています。

+0

あなたは['BN_new'](https://www.openssl.org/docs/man1.0.2/crypto/bn.html)と呼ぶ必要があると思います:*" [BN's]は、データ構造... "*。だから多分 'BIGNUM * someSSLInt = BN_new();'のようなものです。また、[BN_mul_word'](https://www.openssl.org/docs/man1.0.2/crypto/BN_mul_word.html)からの戻り値を確認することも考えられます:* "...サイズに制限はありませんこれらの関数によって操作される数値のうち、メモリ割り当てエラーが発生した場合には常に戻り値をチェックする必要があります。 – jww

+0

私は 'new'関数を使うようにコードを変更しましたが、スタック変数としては 'init'で十分です。出力は同じです。私も 'mul'関数のチェックを追加しましたが、エラーは返されません。 –

答えて

0

問題はOpenSSLではなく、私の出力ウィンドウで、予期せずマーカーなどのない文字列を切り捨てることがわかりました。

関連する問題