使用openssl对文件进行aes加密
admin
2024-01-21 20:01:25
0

项目中需要对文件进行加密和解密,考虑通过openssl来做,因此这两天尝试去搞了一下。参照csdn上的一些源码去实现了一下,稍微有点问题。主要是加密后再解密时,尾部有乱码。一开始找不到原因,于是考虑不写代码,直接调用openssl来做加密,解密,看看会不会有问题。命令很简单:

加密环节:

openssl enc -e -aes-128-cbc -pass file:./keyFile -in plainFile -out encryptFile

-e表示加密

-aes-128-cbc:aes表示加密的方法基于aes标准,128是密钥长度,cbc是aes中一种。aes除了cbc还有ecb,cfb等。具体有哪些用openssl enc -e -list可以查看。

-keyFile就是保存对称密钥的文件

-plainFile是要加密的文件,也就是明文文件

-encryptFile就是加密后的文件

解密环节:

openssl enc -d -aes-128-cbc -pass file:./keyFile -in encryptFile -out plainFile

-d表示解密。

其它的参数很容易看明白。

测试的结果,发现,通过命令行调用的话,解密后的文件非常正常,没有乱码。

之后用代码去实现,无非就是通过system(char* cmd)函数去调用上面两个命令,结果也是好的。

那说明前面通过代码的方式去实现,某个细节上有问题。后来查到了一篇文章,链接如下:

[Solved] AES 256-cbc encryption C++ using OpenSSL | 9to5Answer

原因就在于加密是分段进行的,aes-128的话,每段的长度为16个字节。如果文件的长度,不能被16整除,剩余的字节,凑不够16个的话,需要进行填充(padding),而且用0填充。

size_t inputslength = message.length();//原始文件的长度

unsigned char aes_input[inputslength];

unsigned char aes_key[AES_KEYLENGTH];//秘钥长度

const size_t encslength = ((inputslength + AES_BLOCK_SIZE) / AES_BLOCK_SIZE) * AES_BLOCK_SIZE;//真正加密的时候,明文的长度(填充后的)

unsigned char enc_out[encslength];

unsigned char dec_out[inputslength];

memset(enc_out, 0, sizeof(enc_out)); memset(dec_out, 0, sizeof(dec_out));//填充部分变为0

AES_cbc_encrypt(aes_input, enc_out, inputslength, &enc_key, iv, AES_ENCRYPT);//加密,密文长度可能比明文长度大

按照这种去操作,尾部出现乱码的问题就消失了

相关内容

热门资讯

创历史新高!2025年我国外汇... 国家外汇管理局1月15日发布数据显示,2025年,我国外汇市场交易量达42.6万亿美元,企业外汇套期...
跨境电商运营:2026全球瑜伽... 今天分享的是:跨境电商运营:2026全球瑜伽服市场洞察报告 报告共计:41页 《2026全球瑜伽服市...
中文在线涨势“刹车”,上市以来... 来源:市场资讯 来源:国际金融报 1月15日,连续多日因“狂飙”行情被称为新“易中天”之一的中文在线...
原创 1... 写在文章前的声明:在本文之前的说明:本文中所列的投资信息,只是一个对基金资产净值进行排行的客观描述,...
湾财晚报| 商业用房首付比例降... 编辑 | 子衿 商业用房首付比例降至30% 今日,商办地产市场迎来重磅利好。 中国人民银行新闻发言人...
全年26亿!这些银行“喜提”罚... 过去一年,监管“长牙带刺、有棱有角”的态度一以贯之,驱动银行从根源上提升合规能力,强化内控管理。 企...
业绩拐点已现?金沃股份预计去年... 公司于今日晚间发布公告,2025年,公司在手订单情况良好,预计实现营业收入12.4-12.5亿元,同...
监管批复!郑荣波就任东亚银行珠... 2026年1月15日,根据国家金融监督管理总局消息,《关于核准郑荣波东亚银行(中国)有限公司珠海分行...
格力电器,近56亿元“大红包”... 1月15日晚,格力电器披露2025年中期权益分派实施公告。 根据方案,格力电器拟以公司现有总股本剔...
新技术助力提高IVF成功率,女... 打破生育瓶颈:新技术或助提高IVF成功率 想象一下,经历了数次试管婴儿(IVF)治疗的女性,心中满是...
卖“未来”换喘息:一品红主业失... 一品红(300723.SZ)再次向市场递交了一份亏损的成绩单。 1月14日发布的业绩预告显示,一品红...
央行:下调各类结构性货币政策工... 文、摄影/刘佳 1月15日,人民银行新闻发言人、副行长邹澜在国新办新闻发布会上表示,根据当前经济金融...
锂电大牛股,董事长等三人收到警... 2025年股价涨幅高达429.42%的锂电大牛股天际股份,1月15日晚发布扭亏为盈的业绩预告,同时“...
重磅年度经济数据即将发布,5%... 备受市场关注的2025中国经济年报即将揭晓。 国家统计局将于1月19日发布2025年度经济数据。机构...
雷军强调:新一代SU7所有信息... 凤凰网科技讯 1月15日,雷军再次直播谈新一代SU7。据了解,标准版、Pro版车型基于752V碳化硅...
英伟达投资初创公司Harmon... IT之家 1 月 15 日消息,据 AXIOS 网站报道,芯片制造商英伟达(Nvidia)加入了投资...
西贝闭店30%:老派企业家的认... 102家门店集中关停,为西贝长达四个月的“预制菜风波”给出了最直接的市场答案。而贾国龙在闭店声明中的...
原创 黄... 最近听说金店又调价了,我隔壁的王阿姨本来想买条项链,结果周大福的黄金从1450多跌到1426,她就一...
估值达40亿元 冲刺港股 上海... 《科创板日报》1月15日讯(记者 史士云)近日,上海生生医药冷链科技股份有限公司(以下简称“上海生生...
志特新材、*ST铖昌完成核查,... 财联社1月15日讯,商业航天牛股*ST铖昌和今年首只翻倍牛股志特新材今日双双宣布股票明日复牌。 今日...