美文网首页
关于DES加密的零碎知识点

关于DES加密的零碎知识点

作者: 水中的蓝天 | 来源:发表于2020-06-06 21:12 被阅读0次

本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。

对称加密算法:DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法,AES算法

DES 加密 ECB模式

在加密过程中我们有一个初始化的过程用到了两个 C 中的函数,下面来介绍一下这两个函数。

bzero(keyPtr, sizeof(keyPtr));

 清零函数
void bzero(void *s, int n)//

功能:置字节字符串s的前n个字节为零且包括‘\0’。  
说明:bzero无返回值,并且使用strings.h头文件,
strings.h曾经是posix标准的一部分,
但是在POSIX.1-2001标准里面,这些函数被标记为了遗留函数而不推荐使用。
在POSIX.1-2008标准里已经没有这些函数了。
推荐使用memset替代bzero。

void *memset(void *s, int ch, size_t n)

void *memset(void *s, int ch, size_t n)
函数解释:将s中前n个字节替换为ch并返回s;  
memset:作用是在一段内存块中填充某个给定的值,
它是对较大的结构体或数组进行清零操作的一种最快方法。

苹果原生提供给我们的加密方法介绍


1、CCOperation 一共就2中:一种表示加密、一种标示解密
         enum {
         kCCEncrypt = 0,
         kCCDecrypt,
         };
         typedef uint32_t CCOperation;

     2、CCAlgorithm  加密的算法
     
         enum {
         kCCAlgorithmAES128 = 0,
         kCCAlgorithmAES = 0,
         kCCAlgorithmDES,
         kCCAlgorithm3DES,
         kCCAlgorithmCAST,
         kCCAlgorithmRC4,
         kCCAlgorithmRC2,
         kCCAlgorithmBlowfish
         };
         typedef uint32_t CCAlgorithm;
     3、CCOptions 选择的模式
        Default is CBC.
        enum {
        kCCOptionCBCMode        = 0x0000,
        kCCOptionPKCS7Padding   = 0x0001,
        kCCOptionECBMode        = 0x0002
        这里要重点介绍一下模式的概念。
     模式从宏观上分两种理解:
     一种是加密模式,加密模式对于AES来说有五中模式:CBC,CFB,ECB,OFB,PCBC;不同的加密模式决定了加密的结果不一样
     一种是填充模式,填充模式对于AES来说支持的有三种:NoPadding,PKCS5Padding,ISO10126Padding不支持SSL3Padding
     4、key 密钥
     5、keyLength 密钥长度
     6、iv 偏移向量CBC模式下的参数和密钥共同参与加密过程
     7、dataIn 表示要加密/解密的数据。
     8、dataInLength 表示要加密/解密的数据的长度。
     9、dataOut 用于接收加密后/解密后的结果。
     10、dataOutAvailable 表示加密后/解密后的数据的长度。
     11、dataOutMoved 表示实际加密/解密的数据的长度。(因为有补齐)
     
 CCCryptorStatus CCCrypt(
         CCOperation op,      //操作类型:kCCEncrypt :加密 ; kCCDecrypt:解密
         CCAlgorithm alg,      //加密的算法
         CCOptions options,  //加密模式
         const void *key,        //密钥
         size_t keyLength,     //密钥长度
         const void *iv,           //偏移向量CBC模式下的参数和密钥共同参与加密过程
         const void *dataIn,   //表示要加密/解密的数据
         size_t dataInLength,//表示要加密/解密的数据的长度
         void *dataOut,         //用于接收加密后/解密后的结果
         size_t dataOutAvailable, //表示加密后/解密后的数据的长度
         size_t *dataOutMoved    //表示实际加密/解密的数据的长度。(因为有补齐)
         )
     

DES和3DES

  • 3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法

  • 3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法

  • 3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法

相关文章

网友评论

      本文标题:关于DES加密的零碎知识点

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