2

プログラムで OpenSSL ライブラリを使用することを学んでいます。このコードでは、秘密鍵を生成し、すぐにその鍵を使用してメッセージを暗号化しています。しかし、いつも失敗します。親切に私を助けてください。

private_key = RSA_generate_key(RSA_KEY_LENGTH, RSA_3, NULL, NULL);
if (RSA_check_key(private_key) < 1) {
    printf("generate_key: key generation failed\n");
    exit(-1);
}

unsigned char msg[25];
unsigned char cipher[128];
strcpy((char*)msg, "hello");
int ret = RSA_private_encrypt(25, msg, cipher, private_key,
                              RSA_PKCS1_OAEP_PADDING);
if (ret < 0) {
    printf("encryption in key generation failed\n");
    printf ("%s\n", ERR_error_string (ERR_get_error (), (char *) cipher));
    exit (-1);
}

これは常に失敗し、ERR_error_string で発生するエラーです。

error:04066076:lib(4):func(102):reason(118)
4

3 に答える 3

1

この問題の原因がわかりました。実際、centos マシンと ubuntu マシンの両方で、パディング メソッド RSA_PKCS1_OAEP_PADDING が機能していません。RSA_PKCS1_PADDING に変更すると、正常に動作し始めました。しかし、なぜこれが起こっているのかわかりません。

于 2012-06-18T05:19:46.530 に答える