美文网首页
iOS DES、3DES加密

iOS DES、3DES加密

作者: MrSYLong | 来源:发表于2019-10-27 20:36 被阅读0次

简介

DES全称为Data Encryption Standard,即数据加密标准,是一种对称分组秘钥算法。

3DES是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。

3DES是DES向AES过渡的加密算法,它使用3条64位(实际只用到了56位)的密钥对数据进行三次加密,是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。

3DES重点:
1、 秘钥长度为128位(k1 == k3时)或192位,即16或24个字节组成的字符串;
2、常用ECB 和 CBC 模式加密计算。

原理
DES工作原理

DES工作原理:将数据按照8个字节一段进行加密或解密,从而得到一段8个字节的密文或者明文。再按照顺序将计算所得的数据连在一起即可。

注意:DES加密解密时要求数据长度必须为8个字节的倍数,因此当数据长度不足时必须先进行数据填充,这里使用的填充算法根据系统的不同可能略有不同。

密匙是一个64bit的数据,每八位用作奇偶校验位,实际使用到的只有56bit。

DES算法有两种工作模式,ECB(电子密本方式)和CBC(密文分组链接方式):

DES ECB:就是将数据按照8个字节一段,分别进行DES加密或解密(不足8个字节的按照需求先进行数据填充),最后按照顺序将加密或解密后的结果连在一起即可,各段数据之间互不影响。

DES CBC:在每一段加密或解密的过程中都要与前一段的结果做一次异或操作。同时CBC模式定义了一个特殊的8字节key(称为初始化向量),用以和第一段的结果做异或时用。这种机制使得加密的各段数据之间有了联系。

加密步骤如下:
1、首先将数据按照8个字节一组进行分组得到D1D2......Dn(若数据长度不是8字节的整数倍,先进行数据填充)
2、第一组数据D1与初始化向量I异或后的结果进行DES加密得到第一组密文C1
3、第二组数据D2与第一组的加密结果C1异或以后的结果进行DES加密,得到第二组密文C2
4、之后的数据以此类推,得到Cn
5、按顺序连为C1C2C3......Cn即为加密结果。

解密步骤如下:
1、首先将数据按照8个字节一组进行分组得到C1C2C3......Cn
2、将第一组数据进行解密后与初始化向量I进行异或得到第一组明文D1(注意:一定是先解密再异或)
3、将第二组数据C2进行解密后与第一组密文数据进行异或得到第二组数据D2
4、之后依此类推,得到Dn
5、按顺序连为D1D2D3......Dn即为解密结果。

注意:解密的结果并不一定是我们原来的加密数据,可能还含有你补得位,一定要把补位去掉才是原来的数据。

3DES工作原理

3DES是以DES为基本模块,通过组合分组方法设计出的分组加密算法。
设Ek()和Dk()代表DES算法的加密和解密过程,
k代表DES算法使用的密钥,
P代表明文,
C代表密文,

则3DES加密解密的过程可表示为:

C=Ek3(Dk2(Ek1(P))):(用密钥1加密->用密钥2解密->用密钥3加密)

P=Dk1(Ek2(Dk3(C))):(用密钥3解密->用密钥2加密->用密钥1解密)

这里可以k1=k3,但不能k1=k2=k3(如果相等的话就成了DES算法了)

3DES with 2 diffrent keys(k1=k3),可以是3DES-CBC,也可以是3DES-ECB。3DES-CBC整个算法的流程和DES-CBC一样,但是在原来的加密或者解密处增加了异或运算的步骤,使用的密钥是16字节长度的密钥,将密钥分成左8字节和右8字节的两部分,即k1=k3=左8字节,k2=右8字节,然后进行加密运算和解密运算。

3DES with 3 different keys,和3DES-CBC的流程完全一样,只是使用的密钥是24字节的,它将密钥分为3段8字节的密钥k1,k2,k3,在3DES加密时依次使用k1、k2、k3,在3DES解密时依次使用k3、k2、k1。

总结

DES、3DES加密:数据需要进行分组,每组是8个字节,不足8个字节需要根据填充方式进行不同的填充,DES秘钥为8个字节,3DES秘钥由于k1可以等于k3,所以可以是16个字节或24个字节,ECB模式不需要偏移量iv,CBC模式等其他模式需要偏移量iv,由于偏移量iv是用来与第一组数据进行异或操作,所以长度应该和每组的长度一致,长度为8个字节。

参考

DES算法原理完整版
iOS中3DES加密算法的原理
iOS 常见加密方式 - 对称加密(3DES,AES)
对称加密算法DES、3DES原理和实现方式

相关文章

  • 面试题总结

    1. iOS开发中的加密方式 iOS加密相关算法框架:CommonCrypto。 对称加密: DES、3DES、A...

  • Android Des/3DES加解密

    1、3DES加解密 DES加密分为 单DES和 3DES加密 单DES加密是8个字节长度加密 3DES加密分为:双...

  • iOS常用加解密方式

    AES128 AES128加密 AES128解密 3DES 3DES加密 3DES解密 DES DES加密 DES解密

  • Laravel 3DES (php、java、android、i

    Laravel 3DES Laravel 3DES加密解密,和java,ios互通 安装方法 配置方法 app.p...

  • android 3DES加密和MD5加密

    经常使用加密算法:DES、3DES、RC4、AES,RSA等;对称加密:des,3des,aes非对称加密:rsa...

  • Android 加密解密的几种方式总结

    经常使用加密算法:DES、3DES、RC4、AES,RSA等; 对称加密:des,3des,aes 非对称加密:r...

  • 数据加密--学习

    常用加密算法 AES MD5 BASE64 RSA DES 3DES RC4 对称加密 des,3des,aes非...

  • IOS的签名机制

    前言 了解IOS的数字签名机制之前我们需要掌握以下几个知识:加密解密(对称加密(DES 3DES AES),非对称...

  • Java 实现 3DES 加密

    本文介绍 Java 语言实现 3DES 加密的方法。 目录 3DES 简介 代码实现CBC 3DES 简介 3DE...

  • iOS 签名机制

    前言 学习iOS签名机制,可参考如下学习路线: 加密解密(对称DES 3DES AES、非对称RSA)--->单向...

网友评论

      本文标题:iOS DES、3DES加密

      本文链接:https://www.haomeiwen.com/subject/ugdvmctx.html