0

文字列をbase64エンコードし、OpenSSLapiでC言語でデコードしたい。私はそのようにエンコードしましphpた:

<?php 
echo base64_encode("aaa");
?>

result is "YWFh"

C次に、次のようにデコードします。

int base64_decode(char *str,int str_len,char *decode,int decode_buffer_len){
    int len=0;
    BIO *b64,*bmem;
    b64=BIO_new(BIO_f_base64());
    bmem=BIO_new_mem_buf(str,str_len);
    bmem=BIO_push(b64,bmem);
    len=BIO_read(bmem,decode,str_len);
    decode[len]=0;
    BIO_free_all(bmem);
    return 0;
}

result is NULL, nothing decoded.

以前にエンコードされた文字列をデコードできません。

これらのコマンドラインを使用してテストしようとしました:

$echo "aaa" | openssl enc -base64 
output: YWFhCg==

$echo "YWFhCg==" | openssl enc -base64 -d
output: aaa

phpbase64_encodeとの違いはopenssl何ですか?何が原因ですか?

4

1 に答える 1

1

BIO_new() 呼び出しの後に追加BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL)して、すべての入力が改行なしで 1 行に表示されることを OpenSSL に伝えます。

于 2013-09-25T18:28:06.590 に答える