浅析CBC加密算法

实现密码分组链接(CBC)模式需要一个初始化向量(InitializationVectorIV),该微量是通过将安全关联(SecurityAssociation,SA)中的初始化向量(1V)参数与物理层同步域内容进行异或(ExclusiveOR,XOR)运算得到的。CBCIV的计算方法是:在下行链路上,CBC的初始化是通过将TEK密钥信息中的IV参数与最新DL-MAP中的物理层同步域的内容进行异或运算来实现的;在上行链路上,CBC的初始化是通过将TEK密钥信息中的IV参数与DL-MAP中的物理层同步域的内容进行异或运算来实现的,这个DL—MAP在当前UL-MAP被创建或接收到时必须是有效的。

DES加密过程使用连接安全关联中的初始化向量(1V)和传输加密密钥(TrafficEncryptionKey,TEK),来对PDU载荷进行加密。然后,密文载荷代替原始明文载荷。GMH中的EC(En-cryptionControl,加密控制)位为1时,表示对载荷进行加密操作;加密密钥序列(EncryptionKeySequence,EKS)字段只有在EC字段设置成1时才有效,用于表示传输加密密钥和初始向量的序号将被用于载荷加密。对于新的密文载荷,如果包含了CRC,则需要对其进行更新。

总体而言,DES-CBC加密方案具有较低的安全性,这一方面是由于DES算法本身的脆弱性造成的,另一方面是用于这种加密方法的数据封装没有完整性和抗重放保护机制。

CBC模式下的数据加密和解密详细描述

Cipher-blockchaining(CBC)是一种加密方式,它将纯文本分块和之前加密的密文块进行XOR操作。这里每个密文块都取决于纯文本的这种处理。注意要确保消息独立,并在第一个块中使用初始向量。

SymbianCryptographylibrary的CModeCBCEncryptor可以用来加密数据,它使用CBlockTransformation子类在它随后拥有的CAESEncryptor中进行初始化。下列代码演示了对CBC模式下的数据块加密和解密的操作。

解决方案

CBC模式下对数据的加密

复制到剪贴板C/C++代码

1.voidCCBCExAppUi::CBCEncryption(TPtr8&aDataPtr){CAESEncryptor*aesEncryptor=CAESEncryptor::NewL(iCipherkey);CModeCBCEncryptor*cbcEncryptor=CModeCBCEncryptor::NewLC(aesEncryptor,

iIV);
for(TInti=0;i<3;i++){TPtr8tempDataptr=aDataPtr.MidTPtr(16*i,16);cbcEncryptor->Transform(tempDataptr);cbcEncryptor->SetIV(tempDataptr);}

CleanupStack::PopAndDestroy();}

CBC模式下对数据的解密:

复制到剪贴板C/C++代码1.voidCCBCExAppUi::CBCDecryption(TPtr8&aDataPtr){CAESDecryptor*aesdecryptor=CAESDecryptor::NewL(iCipherkey);CModeCBCDecryptor*cbcDecryptor=CModeCBCDecryptor::NewLC(aesdecryptor,iIV);
TBuf8<16>tempBuf;for(TInti=0;i<3;i++){TPtr8tempDataptr=aDataPtr.MidTPtr(16*i,16);tempBuf.Copy(tempDataptr);cbcDecryptor->Transform(tempDataptr);cbcDecryptor->SetIV(tempBuf);}
CleanupStack::PopAndDestroy();}

2.////////////////////////////////////////////

//Thismodulesisthemain()

//author:JingJiandu

//2002-11-25

//notes:theblocklengthis16bytes

////////////////////////////////////////////

#include"stdafx.h"

#include"windows.h"

#include"CAes.h"

#include

#pragmacomment(lib,"CAes.lib")

3.BOOLisEndOfFile(FILE*fp);

4.voidmain(intargc,char*argv[])

{CCAesCaesObj(128);

intblockLen=CaesObj.BlockByteLen;

intkeyLen=CaesObj.KeyByteLen;

BYTEiv[4][4]={0,1,0,0,//CBC模式的初始向量,长度是加密块长,可以任意设定0,0,2,0,

0,0,0,6,

0,0,0,0};

LPBYTEstate=newBYTE[blockLen];

LPBYTEmidState=new

BYTE[blockLen];

LPBYTEtemp;

LPBYTEp_iv=*iv;

BYTEw1[16]={"AES-CRYPTION"};

charuserKey[100];intcount;inti;FILE*fpr,*fpw;

charfilename1[20],filename2[20],c;

printf("Youwanttoencryptordecryptafile[e/d]");

scanf("%c",&c);

5.if(c=='e'||c=='E')//加密文件过程

{printf(">-----------------------------------------------\nPleaseinputfilenameyouwanttoencrypt:\n");

scanf("%s",filename1);

if((fpr=fopen(filename1,"rb"))==NULL)

{printf("Sorry!Cannotopenthisfile\n");return;}if((fpw=fopen(strcat(filename1,".aes"),"wb+"))==NULL){printf("Cannotopenthisfile\n");

return;}printf("Pleaseinputyourkeynomorethan%dchars!\n",keyLen);scanf("%s",userKey);

CaesObj.keyexpansion(userKey);

printf("Encryptionisgoingon,pleasewaiting........\n");

6.fwrite(w1,1,16,fpw);

i=-1;

while(1)

{++i%=3;

if((count=fread(state,1,blockLen,fpr))

7.if(i==0)CaesObj.blockxor(state,p_iv,blockLen);

elseCaesObj.blockxor(state,midState,blockLen);

CaesObj.rijndael(state);memcpy(midState,state,blockLen);

fwrite(state,1,blockLen,fpw);

8.if(feof(fpr)){fseek(fpw,15,0);

fputc((BYTE)count,fpw);break;}}

9.fclose(fpr);

fclose(fpw);

printf("Encryptionisover,pressanykeytoreturn.\n");

}//加密文件结束

elseif(c=='d'||c=='D')//解密文件过程

{printf("Pleaseinputfilenameyouwanttodecrypt:\n");

printf("Pleaseinputfilenameafterdecryption:\n");

scanf("%s",filename2);if((fpr=fopen(filename1,"rb"))==NULL)

{printf("Cannotopenthisfile\n");return;}if((fpw=fopen(filename2,"wb+"))==NULL){printf("Cannotopenthisfile\n");

return;}printf("Pleaseinputyourkeynomorethan%dchars!\n",keyLen);

scanf("%s",userKey);CaesObj.keyexpansion(userKey);

fread(w1,1,15,fpr);BYTEco;fread(&co,sizeof(BYTE),1,fpr);

temp=newBYTE[blockLen];10.i=-1;

11.while(1){++i%=3;fread(state,1,blockLen,fpr);

memcpy(midState,temp,blockLen);

memcpy(temp,state,blockLen);

CaesObj.invrijndael(state);

if(i==0)CaesObj.blockxor(state,p_iv,blockLen);

12.if(isEndOfFile(fpr)){fwrite(state,1,co,fpw);

break;13.}else{fwrite(state,1,blockLen,fpw);

}}delete[]temp;fclose(fpr);fclose(fpw);

}//解密文件结束

14.delete[]state;delete[]midState;

}//theendofmain()

15.BOOLisEndOfFile(FILE*fp){BOOLres;16.fgetc(fp);

res=feof(fp);

fseek(fp,-1,1);17.returnres;}

欢迎访问夏冰加密软件技术博客,您的数据安全知识库和加密技术资讯平台。我们致力于提供最新的加密技术动态、深入的行业资讯以及实用的软件使用技巧,帮助您在数字时代中保护好每一比特的数据。

THE END
1.AppStore上的“数学题拍照秒解神器”免费 提供App 内购买项目 iPhone 截屏简介 拍照即可快速解决数学问题!立即开始,轻松掌握数学! 只需拍下作业问题的照片,应用程序将为您提供逐步解决方案。 该应用涵盖所有数学水平,包括算术、代数、三角学和微积分。 功能: 扫描纸张或白板上的任何方程 支持打印版和手写版数学问题的扫描 提供交互式逐步讲解 每个问题可https://apps.apple.com/cn/app/%E6%95%B0%E5%AD%A6%E9%A2%98%E6%8B%8D%E7%85%A7%E7%A7%92%E8%A7%A3%E7%A5%9E%E5%99%A8/id1634193091
2.8款出色的AI数学工具Edu指南Socratic 于 2018 年被 Google 收购,已成为学生在数学、科学、文学和社会研究等广泛学科中寻求快速、可靠答案和深入解释的学习伴侣。通过利用先进的 AI 算法,该应用程序可以识别每个问题背后的核心概念,并从网络上的可信来源策划最相关的内容。 Socratic 的主要特点: https://www.shangyexinzhi.com/article/22320560.html
3.算法动画图解app下载算法动画图解中文版下载v1.4.0编程中我们需要学习各种算法,可是仅凭借想象和动手画图是非常难理解的。所以小编带来了算法动画图解app,这是一款非常专业和高效的编程算法学习应用,适合安卓手机和平板使用,它将难懂和抽象的算法转变成动画演示的形式,可以让用户轻松理解各种算法,从容应对编程中遇到的问题。同时软件提供了冒泡排序、插入排序、选择性排序、https://www.ddooo.com/softdown/159933.htm
4.算法学习app免费下载算法详解app是一款手机学习算法的app,为用户详解各种算法原理,图文并茂,让你可以更好的理解和学习算法模型,对于对编程感兴趣的朋友来说非常不错。需要的用户赶快来下载吧。 功能介绍 算法详解app这款应用解释了一些算法的细节并且还有更加详细的演示功能,帮助使用者更好的理解特定的算法。 https://www.fxxz.com/azsoft/288531.html
5.nginxiphash修改配置nginxiphash分配不均四、ip_hash调度算法缺点 一、nginx作为负载均衡服务的调度算法 二、lz虚拟机说明 三、ip_hash调度算法演示 1、配置192.168.3.11虚拟机(即模拟三台虚拟机应用服务器) (1)、分别在/opt/app/code1、code2、code3目录下创建index.html页面(模拟三台服务器分别对应的index页面) https://blog.51cto.com/u_16099169/11365300
6.GitHub提交项目代码以及演示截图 Aug 15, 2018 基于排序变换和混沌Logistic映射的图像置乱算法.docx 最新代码与资料提交 Aug 15, 2018 基于排序变换的混沌图像置乱算法.pdf 最新代码与资料提交 Aug 15, 2018 README MIT license PicEncryptApp 项目介绍 PicEncrypt是我在大学的本科毕业设计中做出来的一个android app。 https://github.com/goldsudo/PicEncryptApp/
7.课程APP界面的设计 熊皓 第十一章 问题求解 ● 11.1 什么是算法 程细才 ● 11.2 算法的两种思维模式 程细才 ● 11.3 万物皆数 程细才 ● 11.4 三种程序基本结构 程细才 ● 11.5 两种常用算法 程细才 第一章计算机与计算思维 计算机已经无处不在,时刻被需要,而计算思维总会被无意识地运用。https://higher.smartedu.cn/course/62354cb19906eace048d2945
8.产业互联网周报ChatGPTApp上线苹果商店;阿里云将在未来12个深信服安全大模型(安全GPT)为深信服自主研发,由“大模型算法+威胁情报+安全知识”训练而成,将大幅提升对流量和日志的威胁检测效果,并通过自然语言交互,可以自动分析用户安全现状、调查研判安全事件,并生成处置建议,进而提升安全运营效率。在现场,深信服工作人员演示了安全GPT技术应用在XDR平台上的效果,包括高级威胁检测、https://m.tmtpost.com/6543592.html
9.WWDC18专访苹果奖学金的背后,是哪些神奇的人和App?当时杜蔚然想到,是否能用一个AI小程序来解汉诺塔。于是他通过Swift Playgrounds,做了一个汉诺塔,通过AI算法来解题。并且,他使用了UITimer实现异步编程,从而一步步显示出汉诺塔的解决过程。 (《汉诺塔》演示图/受访者提供) (《汉诺塔》演示视频/受访者提供,IT之家移动客户端用户若无法观看视频,请点此查看) https://www.ithome.com/0/363/388.htm
10.三明市第一医院生态新城院区智慧医院智能化项目院区楼宇智能化10、采用开放架构,支持快速集成智能算法或应用APP,智能算法或APP可以独立升级;支持智能算法模块动态加载,加载过程中,视频业务不中断; 10、▲支持持操作系统文件备份,当操作系统文件损坏或异常时,设备重启后仍可正常运行。提供CNAS、CMA、CAL认证或省部级以上的检验/测试机构出具的检验/测试报告复印件为考评依据。 11、http://zfcg.cz.sm.gov.cn/upload/document/20221024/df8e2d7d2af449fbbe8f17d25733ff6d.html
11.数学计算器软件有哪些?数学计算器app推荐数学计算器app推荐了比较好的数学计算软件。网上使用的比较多的有desmos函数绘图,内含强大的符号计算引擎功能,可以绘制出各种公式的图形,可以处理平方根、绝对值、微积分等多种数学公式!还有照片数学photomath,也称之为拍照数学计算器!提供了比较方便的拍照计算功能,可以提供完整详细的数学公式解题思路,使用率非常高!另外http://www.downcc.com/k/shuxuejisuanqi/
12.数据结构与算法教程app下载安装数据结构与算法appv1.0.0安卓版数据结构与算法app亮点: 是一款数据结构与算法的辅助理解工具,提供了丰富的动画演示、模拟场景来帮助你更好的理解抽象的数据结构和复杂的算法。 通过自己创建的模型,你可以更深入的理解算法的细节和数据结构的特性。 是你学习和面试的好帮手。厂商名称:杭州小氪科技有限公司 包名:uni.UNID7D06F9 MD5值:20c56e284493https://www.qqtn.com/azsoft/753105.html
13.openframework实时路径规划(RTRRTstar算法)视频演示 实时RRT-star算法介绍 实时RRT-star算法是一种基于采样的运动规划算法,它可以在有限的时间内找到一条渐进最优的路径。实时RRT-star算法是在RRT-star算法的基础上进行了改进,主要有两个方面: - 实时更新起始点。实时RRT-star算法不是从固定的起始点开始搜索,而是每次迭代都将当前的位置作为起始点,这样可以https://blog.csdn.net/cxyhjl/article/details/131118802
14.十亿人互动,以多种方式影响人类的生活,但究其根本,他大学职业搜题刷题APP 下载APP首页 课程 题库模板 题库创建教程 创建题库 登录 创建自己的小题库 搜索 【单选题】 AI助手和推荐算法每天在与数十亿人互动,以多种方式影响人类的生活,但究其根本,他们对人类的了解仍然很少。某杂志近日发表评论文章表示,由AI控制的自动驾驶汽车已逐渐掌握与自然界的互动,但在https://www.shuashuati.com/ti/c4327974ffbc4658944739e27e47335b.html
15.MobileIMSDK是一套专为移动端开发的原创即时通讯高可重用框架① 基于MobileIMSDK的产品级聊天APP:目前仅作演示之用:点击下载体验 或查看运行截图。② MobileIMSDK在高网络延迟下的案例:某款基于MobileIMSDK的商业商品,曾运营于跨洲际的复杂网络环境下,端到端通信延迟在洲际网络繁忙时可高达600ms以上(与服务端的单向延迟约为300ms左右,而通常大家访问国内主流门户的延迟约为20https://www.mianquan.net/project/JackJiang2011-MobileIMSDK
16.JavaScript混淆防护与调试技术探析加密方式的选择则有很多,可以使用AES等加密算法,但这种方式只是增加了逆向工程的难度,而不是为了保护敏感数据的安全。对于需要保护的敏感信息,应该确保它们永远不会出现在客户端代码中。 改变代码结构 改变代码结构,比如使用IIFE封装代码块,减少全局变量的使用,使得代码结构更加复杂 https://xz.aliyun.com/t/13845
17.2023年重大网络安全政策法规盘点工信部拟出台措施规范APP安装卸载行为 工业和信息化部在官方网站公开征求对《工业和信息化部关于进一步提升移动互联网应用服务能力的通知(征求意见稿)》的意见。《征求意见稿》对安装卸载行为、优化服务体验、加强个人信息保护以及响应用户诉求等方面作出了相关规定。 https://www.eet-china.com/mp/a273064.html
18.算法助手app最新官方版下载安卓逆向算法助手app下载安装算法助手app最新官方版介绍 算法助手app最新官方版帮助开发者和技术爱好者进行算法分析与应用程序的深入研究。无论您是想深入理解某个应用的算法,还是进行性能优化,算法助手都能为您提供全方位的支持!有需要相关服务的朋友们不妨来奥兔兔试一试吧! 软件特色 https://www.aotutu.cn/rjzy/30724.html
19.字节跳动做了一款“去算法”的App在今日头条开启了“关闭算法推荐”按钮前后,字节跳动上线了一款新的泛资讯与社区App——识区。 虽然仍在内测阶段,但被媒体曝光之后,如今已是“一码难求”,甚至,淘宝上还有人在公开售卖识区邀请码。 这款App完全抛弃了字节最有优势的“算法推荐”,所有内容由人工决定。用户看到什么文章,由各个识区“区长”通过类似https://i.ifeng.com/c/8FCYoiEx5Bp