且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )

更新时间:2021-10-28 03:29:12

文章目录

一、对称加密原理

二、非密钥整数倍长度的数据加密处理





一、对称加密原理


给定一个 密钥 , 密钥的 长度不确定 , 可能是 32 3232 字节 , 也可能是 64 6464 字节 ;


将 被加密的数据 切割成 与 密钥长度 相同 的 数据块 ;


对上述切割后的数据 , 进行 分组加密 ;


加密后的数据就组成了 密文 ;






二、非密钥整数倍长度的数据加密处理


如果数据长度是 1029 10291029 字节 , 前面的 1024 10241024 字节正常加密 , 后面的 5 55 个字节 , 需要进行特殊处理 ;


数据的长度 不是 密钥大小 的整数倍 ;



最后 5 55 字节处理方案 :


加密密钥是 32 3232 位 , 切割后 , 最后一个数据块是 5 55 字节 , 不是 32 3232 的整数倍 ;


这里需要给后面的 数据进行填充 , 填充的原则是 " 缺几补几 " , 该数据块缺少 27 2727 个字节 , 就在 5 55 个字节后的 27 2727 个字节位置 , 都赋值 27 2727 数值 , 也就是十六进制的 0x1B ;


【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )


将上述数据解密 , 就会发现最后 27 2727 个字节的数据都是 0x1B , 如果发现如下规则 , 有 n 个 n 就将后面 n 个字节删除 ;