openssl的AES加密(base64编码)
【 base64编码/解码 】
AES加密后为乱码,使用base64编码后显示正常
/*************************************************
Function: base64Encode
Description: base64 编码
Input:
1.input 需编码的数据字符串
2.length 实际长度(不可使用strlen求取,字符串中可能含有结束符等)
3.newLine
Output:
Return: 转化后的字符串指针
Others:
*************************************************/
char * base64Encode(const char *buffer, int length, bool newLine)
{
BIO *bmem = NULL;
BIO *b64 = NULL;
BUF_MEM *bptr;
b64 = BIO_new(BIO_f_base64());
if (!newLine) {
BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
}
bmem = BIO_new(BIO_s_mem());
b64 = BIO_push(b64, bmem);
BIO_write(b64, buffer, length);
BIO_flush(b64);
BIO_get_mem_ptr(b64, &bptr);
BIO_set_close(b64, BIO_NOCLOSE);
char *buff = (char *)malloc(bptr->length + 1);
memcpy(buff, bptr->data, bptr->length);
buff[bptr->length] = 0;
BIO_free_all(b64);
return buff;
}
/*************************************************
Function: base64Decode
Description: base64 解码
Input:
1.input 需解码的数据字符串
2.length 实际长度(不可使用strlen求取,字符串中可能含有结束符等)
3.newLine
Output:
Return: 转化后的字符串指针
Others:
*************************************************/
char * base64Decode(char *input, int length, bool newLine)
{
BIO *b64 = NULL;
BIO *bmem = NULL;
char *buffer = (char *)malloc(length);
memset(buffer, 0, length);
b64 = BIO_new(BIO_f_base64());
if (!newLine) {
BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
}
bmem = BIO_new_mem_buf(input, length