问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

大家好,有VC++ DES-CBC代码吗,VB也成,要CBC模式的

发布网友 发布时间:2022-04-26 13:45

我来回答

2个回答

热心网友 时间:2022-06-28 18:24

DES加密模式详解

互联网的软件设计一定少不了加密算法,并且大量使用的都会是对称加密,比较常见的对称加密有:DES、3DES、RC4、AES等等;

加密算法都有几个共同的要点:

密钥长度;(关系到密钥的强度)
加密模式;(ecb、cbc等等)
块加密算法里的填充方式区分;
对于加密模式,很多同学还不清楚,比如DES,也会有ECB、CBC等不同的区分,它们都是标准的;

Windows加密库中,默认则是CBC模式,也可以手工设置;

Openssl库要更明显一点,它的函数名里面就写明了,比如:DES_ncbc_encrypt,一看就知道是cbc模式;

JAVA里面也比较清楚:Cipher c = Cipher.getInstance(”DES/CBC/PKCS5Padding”); 也可以看到是CBC模式

各种加密模式有什么不同呢:(为了方便,这里的加密key都取64位)

电子密码本模式ECB:
最古老,最简单的模式,将加密的数据分成若干组,每组的大小跟加密密钥长度相同;

然后每组都用相同的密钥加密, 比如DES算法, 如果最后一个分组长度不够64位,要补齐64位;

定义:

Enc(X,Y)是加密函数

Dec(X,Y)是解密函数

Key是加密密钥;

Pi ( i = 0,1…n)是明文块,大小为64bit;

Ci ( i = 0,1…n)是密文块,大小为64bit;

ECB加密算法可表示为:

Ci = Enc(Key, Pi)

ECB解密算法可以表示为:

Pi = Dec(Key,Ci)

算法 特点:

每次Key、明文、密文的长度都必须是64位;
数据块重复排序不需要检测;
相同的明文块(使用相同的密钥)产生相同的密文块,容易遭受字典攻击;
一个错误仅仅会对一个密文块产生影响;
加密块链模式CBC:
与ECB模式最大的不同是加入了初始向量

定义:

Enc(X,Y)是加密函数

Dec(X,Y)是解密函数

Key是加密密钥;

Pi ( i = 0,1…n)是明文块,大小为64bit;

Ci ( i = 0,1…n)是密文块,大小为64bit;

XOR(X,Y)是异或运算;

IV是初始向量(一般为64位);

ECB加密算法可表示为:

C0 = Enc(Key, XOR(IV, P0)

Ci = Enc(Key, XOR(Ci-1, Pi)

ECB解密算法可以表示为:

P0 = XOR(IV, Dec(Key, C0))

Pi = XOR(Ci-1, Dec(Key,Ci))

算法特点:

每次加密的密文长度为64位(8个字节);
当相同的明文使用相同的密钥和初始向量的时候CBC模式总是产生相同的密文;
密文块要依赖以前的操作结果,所以,密文块不能进行重新排列;
可以使用不同的初始化向量来避免相同的明文产生相同的密文,一定程度上抵抗字典攻击;
一个错误发生以后,当前和以后的密文都会被影响;
加密反馈模式CFB:
加密反馈模式克服了需要等待8个字节才能加密的缺点,它采用了分组密码作为流密码的密钥流生成器;

定义:

Enc(X,Y)是加密函数

Dec(X,Y)是解密函数

Key是加密密钥;

Pi ( i = 0,1…n)是明文块,大小为64bit;

Ci ( i = 0,1…n)是密文块,大小为64bit;

Si ( i = 0,1…n),大小为8bit,n个连续的Si组成加密位移寄存器,一般n=8;

Oi = Enc(Key, Si);

Lef(x) 为取数据x的最左8个bit位;

A(x,y)为合并x左移8位,空位用y填充

CFB加密算法可表示为:

S0 = IV;

Oi = Enc(Key, Si);

Ci = XOR( Ci, Lef(Oi));

Si = A(Si-1, Ci);

CFB解密算法可表示为:

S0 = IV;

Oi = Enc(Key, Si);

Ci = XOR( Ci, Lef(Oi));

Si = A(Si-1, Ci);

图示:

特点:

每次加密的Pi和Ci不大于64位;
加密算法和解密算法相同,不能适用于公钥算法;
使用相同的密钥和初始向量的时候,相同明文使用CFB模式加密输出相同的密文;
可以使用不同的初始化变量使相同的明文产生不同的密文,防止字典攻击;
加密强度依赖于密钥长度;
加密块长度过小时,会增加循环的数量,导致开销增加;
加密块长度应时8位的整数倍(即字节为单位);
一旦某位数据出错,会影响目前和其后8个块的数据;
输出反馈模式OFB:
与CFB模式不同之处在于, 加密位移寄存器与密文无关了,仅与加密key和加密算法有关;

做法是不再把密文输入到加密移位寄存器,而是把输出的分组密文(Oi)输入到一位寄存器;

定义:

Enc(X,Y)是加密函数

Dec(X,Y)是解密函数

Key是加密密钥;

Pi ( i = 0,1…n)是明文块,大小为64bit;

Ci ( i = 0,1…n)是密文块,大小为64bit;

Si ( i = 0,1…n),大小为8bit,n个连续的Si组成加密位移寄存器,一般n=8;

Oi = Enc(Key, Si);

Lef(x) 为取数据x的最左8个bit位;

A(x,y)为合并x左移8位,空位用y填充

CFB加密算法可表示为:

S0 = IV;

Oi = Enc(Key, Si);

Ci = XOR( Ci, Lef(Oi));

Si = A(Si-1, Oi); 注意这里与CFB模式的不同

CFB解密算法可表示为:

S0 = IV;

Oi = Enc(Key, Si);

Ci = XOR( Ci, Lef(Oi));

Si = A(Si-1, Oi);

特点:

与CFB类似,以下都是不同之处;
因为密文没有参与链操作,所以使得OFB模式更容易受到攻击;
不会进行错误传播,某位密文发生错误,只会影响该位对应的明文,而不会影响别的位;
不是自同步的,如果加密和解密两个操作失去同步,那么系统需要重新初始化;
每次重新同步时,应使用不同的初始向量。可以避免产生相同的比特流,避免”已知明文”攻击 ;

Windows API进行加密参数设置:
CryptGetKeyParam可以对HCRYPTKEY对象的各种参数进行查询,包括加密模式、padding方式等;但这个函数不能用于查询加密key的明文;

但如果需要看到真正加密的key是什么,则需要另外的API:CryptExportKey,选择PLAINTEXTKEYBLOB方式进行导出可以得到key的明文;

使用加密要注意的地方:
当两个封装好的加密算法对8byte数据进行DES加密时,如果加密出来的结果是一样的,千万不要认为这两个算法可以互换;

因为ECB模式,和向量全为0的CBC模式得到的密文前8byte,确实是一样,但后面的密文就不一样了;

使用加密以前确定你理解了它;

互联网程序中加密模式的使用:
ECB是不推荐的方式,Key相同时,相同的明文在不同的时候产生相同的明文,容易遭到字典攻击;

CBC由于加入了向量参数,一定程度上抵御了字典工具,但缺点也随之而来,一旦中间一个数据出错或丢失,后面的数据将受到影响;

CFB与CBC类似,好处是明文和密文不用是8bit的整数倍,中间一个数据出错,只影响后面的几个块的数据;

OFB比CFB方式,一旦一个数据出错,不会影响后面的数据,但安全性降低;

因此,推荐使用CFB方式,但每个数据包单独加密,否则一个数据包丢失,需要做很多容错处理;

当然,具体问题也要具体分析,对于只需要”特定安全性”①,不需要”计算安全性”以上的软件,也可以使用ECB模式;

参考资料:http://linux.bokee.com/6956594.html

热心网友 时间:2022-06-28 18:24

Phrase: 31 32 33 34 35 36 37 38
Key: 31 32 33 34 35 36 37 38
IV: 31 31 31 31 31 31 31 31

des_cbc_encrypt Cipher: 6E 8B 79 29 82 6F AE DE

des_cbc_decrypt Phrase: 31 32 33 34 35 36 37 38

以上数据均已16进制数表示。
你的结果应该不对。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...证时买房合同及购房发票,契税发票全部被收走了应该吗 ...用后来也没有还回来,马上要交付了没有发票怎么办,急急 应对疫情,作为普通公众,我该怎么办? 河北金融学院硕士点是什么 河北金融学院怎样 法院判决书上配偶只承诺共同还款怎么办 到底哪个牌子的螺旋藻好? 绿矿螺旋藻可以减肥吗? 没有谁知道螺旋藻哪个品牌最好啊?你们有没有亲身体验过呢? 我姐姐患有乳腺增生,我给她买了两袋绿矿牌螺旋藻,她可以吃吗?对她的... openssl中有没有HMAC-SHA1,CBC-MAC算法 aes加密算法有多少种模式 openssl加密数据为8倍数,怎么多出8位 差分格式的TVD和CBC格式—MINMOD及SMART 加密算法 AES_256_CBC 安全性如何? 证明为什么cbc和cfb方式的解密过程实际上得到的是有效的解密 基于DES算法的CBC演示程序实现(java) 有谁会写java的Blowfish-CBC加密算法吗? 制动力分配EBD/CBC是什么 JAVA DES CBC算法 AES共有ECB,CBC,CFB,OFB,CTR五种模式分别有什么区别 CBC是什么意思? 打字时如何切换标点符号的大小? 初级会计证报名时间2021入口哪个? 打字的时侯怎么弄标点符号 初级会计在哪个网站报名缴费? vivoy5s声控叫出小v怎么设置? vivo手机y5s怎么样,可以开启语音唤醒功能吗? 平板电脑做自媒体好用吗 平板电脑可以编程吗 急求一个基于aes算法的cbc-mac 的完整c++程序 虚拟专网的加密算法说明 分组密码的算法要求 英雄联盟裁决之镰现在是多少局了?我打了30多局还没消除,打完又没显示还剩多少局,就是无底洞 主板蓝筹股是什么? 股市里的创业板和蓝筹股是怎么分别的?有标志吗? lol裁决之镰最多能裁决几次 lol裁决之镰最多能裁决几次惩罚。 LOL裁决之镰这个机制是不是没有了? 纽约公共图书馆的介绍 纽约公共图书馆的概况 美国纽约法拉盛图书馆 国外有哪些图书馆是比较出名的? 请问纽约大学的图书馆怎么样?能给我介绍下吗? 曼哈顿的中央大道,第五大道,都有哪些值得去的地方? 纽约公共图书馆的历史 纽约第五大街图书馆叫什么名字 纽约植物园的学术图书馆 纽约法拉盛图书馆的设计者是谁 美国一些著名的电影中都出现过哪些著名的纽约地标?