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 in和有什么区别openssl?是什么原因造成的?

4

1 回答 1

1

在 BIO_new() 调用之后添加BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL)以告诉 OpenSSL 所有输入都出现在没有换行符的单行中。

于 2013-09-25T18:28:06.590 回答