openssl的AES加密(base64编码)

本文介绍了如何使用openssl进行AES加密,并结合base64编码处理加密后的乱码问题。内容包括AES加密的块长度规则,如(clearLen/16 + 1) * 16,以及在处理加密字符串长度时的注意事项,特别是不能直接使用strlen函数。最后提到了一种简单的判断字符串结尾的方法。
摘要由CSDN通过智能技术生成

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
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值