DES/AES加密(可逆)

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的算法。该加密算法是一种对称加密方式,其加密运算、解密运算需要使用的是同样的密钥(一组字符串)即可。

注意:

  • 现在用AES这个标准来替代原先的DES。

  • AES和DES的区别:

    • 加密后密文长度的不同:

      • DES加密后密文长度是8的整数倍

      • AES加密后密文长度是16的整数倍

    • 应用场景的不同:

      • 企业级开发使用DES足够安全

      • 如果要求高使用AES

DES算法的入口参数有三个:

  • Key、Data、Mode,padding、iv

    • Key为DES算法的工作密钥;

    • Data为要被加密或被解密的数据;

    • Mode为DES的工作模式。最常用的模式就是 CBC 模式和 ECB模式

      • ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。

      • CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或后再加密,这样做的目的是增强破解难度。

    • padding为填充模式,如果加密后密文长度如果达不到指定整数倍(8个字节、16个字节),填充对应字符

    • iv:参数中的iv主要用于CBC模式,确保即使加密相同的明文,每次产生的密文也不相同,增强加密的安全性。iv通常是一个16字节的随机字符串。这个字符串在解密时也需要用到,因此需要妥善保存。

代码实现 - Python版本

环境安装:

AES-CBC 加密

AES-CBC 解密

AES-ECB 字符串密钥 加密

AES-ECB 字符串密钥 解密

AES-ECB 对象密钥 解密

circle-info

简单的方式是直接把key对象转成字符串

代码实现 - JS版本

AES-CBC 加密:

AES-CBC 解密:

上述代码的关键字:

  • AES,DES

  • encrypt(用于加密的函数名),decrypt(用于解密的函数名)

  • xxxkey:秘钥一般是单独生成的,一定不会傻到明文的写在代码中!

Last updated