当前位置: 首页>编程语言>正文

3DES加密原理

        3DES是三重数据加密算法块密码的通称,听到名字就知道与DES加密有关,简单的理解为用DES加密三次,通过增加DES的密钥长度来避免暴力破解。3DES算法是指使用双长度(16字节)[密钥] 将8字节明文[数据块] 进行3次DES加密/解密。3DES的密钥是8个字节,但实际上只有7个用上,也就是56位。3DES是用3个或2个des密钥加密一串明文,最少112位最多168位。也就是14~21个字母或数字符号。设Ek()和Dk()分别代表DES算法的加密和解密过程,k代表DES算法使用的密钥,M代表明文,C代表密文,则3DES算法的过程可表示为:加密:C=Ek3(Dk2(Ek1(M))) 即对明文数据进行,加密 --> 解密 --> 加密的过程,最后得到密文数据解密:M=Dk1(Ek2(Dk3(C))) 即对密文数据进行,解密 --> 加密 --> 解密的过程,最后得到明文数据这里可以K1=K3,但不能K1=K2=K3(如果相等的话就成了DES算法了)3DES(K1=K3),可以是3DES-CBC,也可以是3DES-ECB,3DES-CBC整个算法的流程和DES-CBC一样,但是在原来的加密或者解密处增加了异或运算的步骤,使用的**密钥是16字节长度的密钥**,将密钥分成左8字节和右8字节的两部分,即k1=左8字节,k2=右8字节,然后进行加密运算和解密运算。3DES(K1≠K2≠K3),和3DES-CBC的流程完全一样,**只是使用的密钥是24字节的**,但在每个加密解密加密时候用的密钥不一样,将密钥分为3段8字节的密钥分别为密钥1、密钥2、密钥3,在3DES加密时对加密解密加密依次使用密钥1、密钥2、密钥3,在3DES解密时对解密加密解密依次使用密钥3、密钥2、密钥1。由于DES加解密算法是每8个字节作为一个加解密数据块,因此在实现该算法时,需要对数据进行分块和补位(即最后不足8字节时,要补足8字节)ECB模式:将待处理的数据分成若干块,每块的长度都为8字节。然后对每块进行加密或解密,最后将他们连接在一起便是最终的结果。每一块的数据互不干扰。CBC模式:也需要将待处理的数据分块,但是每一块数据在加密或者解密之前都要与前一块的结果做一次异或操作,因此该模式需要定义一个特殊的8字节Key,用于和第一块数据做异或操作。这个特殊的Key就是通常说的初始化向量。在代码中书写时需要配置iv参数,注意iv参数是对应CBC模式的。这样一来,每一块数据都是有联系的,这是与ECB模式不同的一点。

    如果是iOS开发,设置模式的时候的应该 kCCOptionECBMode|kCCOptionPKCS7Padding,因为后台服务器端是pkcs5padding

    另外在传递数据的时候,后台返回的数据字符串有可能是类似"43Ddlkd4LKJJHFdg44fGFD"这种字符串,而这种数据是十六进制的Data数据,需要转化为相对应的Data,再进行json或者其他操作,这一点需要注意。关于3DES的加解密工作,网上有相关的Demo,本文不做提供,上文3DES原理也是来自网络(博客作者:透支未来),本文只做数据传递时需要考虑到的情况进行阐述。


https://www.xamrdz.com/lan/5fy2016712.html

相关文章: