zoukankan      html  css  js  c++  java
  • AES加密算法

    背景

    开发中需要进行异构平台的数据通信,用到了AES加密。但是,AES加密涉及几个参数,不是简单的输入源数据和密码就可以得到结果。跨平台联合调试的时候,基本上都会碰到这个问题。

    一、AES加密

    AES和DES是常见的对称加密算法。

    二、遇到的问题

    理解误区:以为使用相同的密码进行加密,就能在不同平台上得到同样的结果。

    三、AES的参数

    本文的AES实现,默认指的是Rijndael。

    • key length(密钥位数,密码长度)
    • key (密钥,密码)
    • IV (向量)
    • mode (加密模式)
    • padding (填充方式)

    异构系统通信的时候,必然会遇到这个问题。c、c++、lua、csharp、java、php、go、python这些语言自带或者依赖的第三方AES库,都可能默认使用不同的参数。所以,异构系统使用aes进行通信,必须首先确保上面的五个参数是一模一样的。

    四、参数的意义

    1. key length(密钥位数,密码长度)
      AES128,AES192,AES256(128 位、192 位或 256 位)
      128位对应的是16个字节,所以部分平台库上,会使用16个字符或者长度为16的字符串来做密码。
    2. key (密钥,密码)
      key指的就是密码了,AES128就是128位的,如果位数不够,某些库可能会自动填充到128。
    3. IV (向量)
      IV称为初始向量,不同的IV加密后的字符串是不同的,加密和解密需要相同的IV。
    4. mode (加密模式)
      AES分为几种模式,比如ECB,CBC,CFB等等,这些模式除了ECB由于没有使用IV而不太安全,其他模式差别并没有太明显。
    5. padding (填充方式)
      对于加密解密两端需要使用同一的PADDING模式,大部分PADDING模式为PKCS5, PKCS7, NOPADDING。
  • 相关阅读:
    Python 面向对象
    Python __str__()
    数据降维
    高并发相关概念
    centos7下安装kubernetes1.18
    OB-运行日志
    OB-租户(Tenant)管理
    OB-资源管理(Resource Unit/Pool)
    [转载]-基于 VMWARE Oracle Linux7.9 安装 Oracle19c RAC 详细配置方案
    OB-管理oceanbase集群参数
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/13184310.html
Copyright © 2011-2022 走看看