字符串AES对称加密-openssl命令及C语言实现

        C代码调用EVP库,实现AES对称加、解密功能。EVP(Enveloped Public Key)是 OpenSSL 中用于提供对称加密、非对称加密和哈希功能的高级加密接口。EVP 库提供了一个抽象的加密框架,使得可以在不同的算法实现之间进行切换,而不需要改变应用程序的代码。

        下面分别用openssl命令C语言方式实现相同的AES对称加、解密功能。

一、openssl命令AES对称加密、解密

1、使用OpenSSL的命令行工具进行AES-256-CBC加密

使用字符串 "aes_password" 作为密码,AES对称加密 "123456" 字符串。

$ echo -n "123456" | openssl enc -e -aes-256-cbc -a -nosalt -pass pass:aes_password

rUzai3Axmopjhq6rtiExmw==                                //结果

  • -e:加密操作;(-d 表示解密)
  • -aes-256-cbc:使用AES算法的256位密钥和CBC模式;
  • -a:使用base64编码格式,将加密后的数据转为base64编码输出;
  • -nosalt:不使用盐值。在AES-CBC模式中,盐值通常是随机生成的,以增加密钥的强度。
  • -pass pass:<password> 指定了加密的密钥

2、解密

将加密后的密文解密

echo "rUzai3Axmopjhq6rtiExmw==" | openssl enc -d -aes-256-cbc -a -nosalt -pass pass:aes_password

结果为 "123456" 与加密前的字符串相同。

二、C语言AES对称加密、解密

直接给出C语言实现AES-256-CBC加密、解密的代码。

1、AES对称加密、解密代码

代码下载链接:https://download.youkuaiyun.com/download/hinewcc/89204956

  • openssl_aes.c 函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/evp.h>
#include <openssl/aes.h>
#include "openssl_aes.h"

/*
*****************************************************************************************
*	函 数 名: base64_encode
*	功能说明: 对加密后的数据进行 base64 编码
*	形    参:   _pInput :    输入数据
*               _InLen  :   输入数据长度
*               _pOutput:   输出base64编码结果
*               _pOutLen:   输出数据长度
*	返 回 值: 0:成功, -1:失败
*******************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值