千家信息网

如何确保明文和密文的长度是一致的

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,加密之后会变大的问题  做过加密的人都应该有"加密之后文件会变大"的经验。变大就变大吧,对于日常使用和APP开发或者服务端开发而言,大个几k字节是无所谓的,但是如果是使用RF(射频)通信,那么大几个字
千家信息网最后更新 2025年12月01日如何确保明文和密文的长度是一致的

加密之后会变大的问题

  做过加密的人都应该有"加密之后文件会变大"的经验。变大就变大吧,对于日常使用和APP开发或者服务端开发而言,大个几k字节是无所谓的,但是如果是使用RF(射频)通信,那么大几个字节就会导致通信失败率的增加,所以对于这样的场景,你就需要确保密文和明文一样长,最好是还能短一点。
  由于短一点是压缩算法的功劳,和加密算法本身没有关系,我们这里不做分析,今天我们以openssl的命令行工具为例来学习如何确保密文长度等于明文长度。

为啥密文会比明文长

  为啥加密之后就会边长呢?为了更安全!那么为了更安全长到哪里了?
    1. 长在填充;
    2. 长在salt;
  填充主要是为了解决分组加密,明文长度不是分组的整数倍的问题,为了简化填充规则,如果明文是分组的倍数,就填充一个整的分组。

上图就是一个明文是128bits的aes-128-cbc的加密样例,填充了整整一个128bits的填充块。
  salt是作为秘钥和IV生成的一个随机因子,为了解决相同的明文和秘钥生成相同的密文的问题,由于salt必须参与到运算中,所以salt通常是以明文的形式拼接在明文的最前面,salt通常是16个字节的长度,前8字节是个固定的magic数,后8个字节是随机数,这样有salt的密文至少会增加一个长度是16个字节的明文头部信息。

上图就是一个有salt的,明文是一个字节的密文是16+1个字节的样例输出。

如何控制让密文和明文长度一致呢

  既然增长是由于填充和salt导致的,那么要保证一样长,那就需要去掉填充和salt,当然去掉填充的前提需要明文的长度是分组的倍数,要不然加密会报错的。

上图是一个nopad和nosalt的截图,我们在看一个对比图,如下:

特别提醒小心-a的参数

  -a在参数在openssl里面是对加密或者解密结果的base64的处理,如果是加密就是base64编码,反之是解码。base64会把没3个字节编码为4个字节的科输入字符,如果不小心用到这个选项,你会发现密文长度填充了不少。
  重要的事情说三遍,用了-a会变长!用了-a会变长!用了-a会变长!

进一步的学习资料推荐

  使用openssl做AES的加密
  使用openssl做SSL/TLS/HTTPS的实验

明文 加密 字节 密文 长度 分组 上图 就是 问题 相同 倍数 参数 算法 编码 学习 开发 生成 通信 一致 重要 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 游戏服务器到期了会怎么样 三山网络技术服务部 毕业论文使用别人的数据库 软件开发需要多少个经理 数据库中为什么创建索引 职高数据库计划 三级数据库考试环境 艾尔登法环联机连不上服务器 网络安全主题创意绘画命名格式 个人资料虚构数据库 贵州移动服务器地址云空间 mc服务器管理隐身指令 韩国独立服务器租用 广电网络技术专业就业前景 bookshop数据库创建命令 江阴品牌软件开发代理品牌 公网ip映射服务器端口 fm20导入数据库 未成年网络安全事件 软件开发成本如何分摊 枣庄商城软件开发哪家便宜 五厘网络技术有限公司资助了哪些方程式车队 与艾尔登法环服务器断开连接 登录服务器错误咋回事 光耀互联网信息科技 软件开发的经费 数据库表查询全部学生学号和姓名 深圳一号互联网科技王胥勇 冬奥网络安全卫士徐舒扬 软件实施服务器部署
0