字段加密后长度变化

网友投稿 1292 2022-11-24

字段加密后长度变化

字段加密后长度变化

非对称加密算法:RSA,DSA/DSS 对称加密算法:AES,RC4,3DES HASH算法:MD5,SHA1,SHA256

数据加密的长度变化

加密流出

字符串转换成 bytes -> padding -> base64 编码

字符串转换成 byte

根据字符串所占长度不同,长度会扩充到不同倍数

ascii 码的字符,如数字字母等,每个字符只占一个字节,长度不扩充正常情况下,汉字等 unicode 编码,一个字符占 3 个字节,长度扩充3倍如果是 mysql 中的 utf8mb4 编码,一个字符最大可以占用4个字节,长度扩充4倍

padding

将bytes 字符填充到16的整数倍,长度最大增加16

加密

长度增加28(消息校验体16, 随机数12)

base64 编码

长度填充到3整数倍, 之后4/3

大致上最大长度为 4/3* n *length + 64

Go 版本实现

getCount 计算:

func getCount(text string) int { l := countBytes(text) l = countPadding(l) l = countEncrypt(l, true) l = countBase64(l) return l}func countBytes(text string) int { orig := []byte(text) return len(orig)}func countPadding(l int) int { pl := 16 - (l % 16) return l + pl}func countEncrypt(l int, flag bool) int { if flag == false { return l + 16 } return l + 16 + 12}func countBase64(l int) int { if l%3 == 0 { return l / 3 * 4 } else { return (l/3 + 1) * 4 }}

内推链接

博客: 王小明

关注我们,了解更多

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【笔试题】2020年秋招爱奇艺校园招聘测试开发卷
下一篇:MySQl 中有哪些锁
相关文章

 发表评论

暂时没有评论,来抢沙发吧~