天天看点

iOS对称加密 AES DES

对称加密解密用同一个密钥, 所以密钥的保密就很重要

介绍

  • DES:数据加密标准

    DES设计中使用了分组密码设计的两个原则:混淆(confusion)和扩散(diffusion)

  • 3DES: 是DES向AES过渡的加密算法

    使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形,目前还没有关于攻破3DES的报道

  • AES:高级加密标准

    是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES

ECB & CBC介绍

ECB电子代码本

  • 把每一个数据块独立加密,最后再拼接。解密也是同样的道理。先拆分数据块,独立解密
  • 特点: 每个块都是独立加密的

终端测试命令:

加密

openssl enc -des-ecb -K 616263 -nosalt -in msg1.txt -out msg1.bin

解析:openssl 库函数、 enc加密 、des-ecb 加密方式方法、 -k 加密key、 616263 abc的16进制、 -nosalt 不加盐、-in msg1.txt 加密哪个文本、 -out msg1.bin 输出bin文件

解密

openssl enc -des-ecb -K 616263 -nosalt -in msg1.bin -out msg1.txt -d

查看之后的二进制文件

xxd msg1.bin

CBC密码块链

  • 加密每一个数据块,都会与上一个数据块之间有联系;密码块链,使用密钥和一个向量对数据执行加密转换。能够保证密文的完整性,如果一个数据改变了,后面数据都会造成破坏!
  • 特点:使用一个秘钥和一个初始化向量(IV)对数据执行加密转换
  • 优点:可以有效的保证密文的完整性
密码学为什么和几何能扯到关系?

因为几何是有规律的,但结果是多变的

现代加密学都和几何有关,因为几何(包含圆形、椭圆、球体)的变量的是规律的,但是结果是多变的。

终端测试命令

加密

openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in a.txt -out msg1.bin

解密

openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in msg1.bin -out msg4.txt -d

查看加密之后的二进制文件

xxd msg1.bin

iOS中的函数

CCCrypt:对称加密的核心函数(加密、解密)

  • 参数:
  1. 加密kCCEncrypt、解密kCCDecrypt
  2. 加密算法 AES/DES

    kCCAlgorithmAES 高级加密标准

    kCCAlgorithmDES 数据加密标准

  3. 加密选项:ECB/CBC
  4. 加密的密钥
  5. 密钥长度
  6. iv 初始化向量 DES加密为nil
  7. 加密的长度
  8. 加密的数据长度
  9. 密文的内存地址
  10. 密文缓冲区大小
  11. 加密结果大小

附:iOS对称加密的demogithub链接