Crypto++密码库之AES对称加密

Crypto++密码库是开源项目,可以去Github上下载,使用VS2010+进行编译,生成cryptlib.lib库文件,可用在项目中,进行加解密操作。

// 对称加密是指加密和解密使用相同的秘钥,比较出名的算法有AES对称加密算法。

// AES对称加密就是对16字节(128位)数据进行加密的过程,也就是把这128位数据通过一系列的变化编程另外一个128位数据。
// 由于加密的数据的长度是不确定的,不一定是128的整数倍,所以,在处理加密的过程中,要增加补位代码。

// 加密步骤:
// 1.声明AES加密器。
// 2.将加密数据用0来填充,按128位大小进行对齐。
// 3.设置AES加密秘钥。
// 4.获取128位数据,并对数据进行加密,返回128位加密结果。
// 5.继续获取下一个128位数据,重复第四步骤,直到数据获取完毕。

// 示例代码:

// 加密
// 输入:原文内容、原文内容的长度、秘钥内容、秘钥内容的长度
// 输出:密文内容、密文内容的长度

BOOL AES_Encrypt(BYTE* pOriginalData, DWORD dwOriginalDataSize, BYTE* pAESKey, DWORD dwAESKeySize, BYTE** ppEncryptData, DWORD pdwEncryptData)
{
   
    // 加密器
    AESEncryption aesEncryptor;
    // 加密原文数据块
    unsigned char inBlock[AES::BLOCKSIZE];
    // 加密后的密文数据块
    unsigned char outBlokc(AES::BLOCKSIZE));
    // 必须全设置为零
    unsigned char xorBlock(AES::BLOCKSIZE);

    DWORD dwOffset = 0; // 计算偏移
    BYTE* pEncryptData = NULL;
    DWORD dwEncryptDataSize = 0;

    // 计算原文长度,并按128位(即16个字节)对齐,若不够则填充为0
    DWORD dwQuotient = dwOriginalDataSize / AES::BLOCKSIZE;
    DWORD dwRemained = dwOriginalDataSize % AES::BLOCKSIZE;

    if (0 != dwRemained)
    {<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值