字段加密后长度变化

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 字段加密后长度变化

加密算法有哪些


非对称加密算法: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
 }
}

内推链接

相关文章
|
存储 Java 数据库
在 Spring Boot 中如何实现对加密后的敏感字段进行模糊查询?
在 Spring Boot 中如何实现对加密后的敏感字段进行模糊查询?
515 0
在 Spring Boot 中如何实现对加密后的敏感字段进行模糊查询?
|
Java 测试技术 数据安全/隐私保护
华为OD:敏感字段加密
华为OD:敏感字段加密
123 0
|
SQL 关系型数据库 MySQL
mysql更新密码字段为手机号后六位前面拼接上Q后面拼接上W然后md5加密
mysql更新密码字段为手机号后六位前面拼接上Q后面拼接上W然后md5加密
306 0
|
数据安全/隐私保护 NoSQL MongoDB
深入MongoDB4.2新特性:字段级加密 Client-Side Field Level Encryption
深入MongoDB4.2新特性:字段级加密 Client-Side Field Level Encryption
5006 0
|
NoSQL MongoDB 数据库
MongoDB 4.2新特性:分布式事务、字段级加密、通配符索引、物化视图
MongoDB 4.2已经发布,我们来看看它增加了哪些新特性?分布式事务?数据库加密?通配符索引?
2878 0
|
SQL Oracle 关系型数据库
ORACLE 加密(TDE) 对字段加密测试
                                 ORACLE TDE(Transparent Data Encryption) 参考http://space.
1347 0
|
4天前
|
存储 安全 算法
网络安全的屏障与钥匙:漏洞防御、加密技术与安全意识
【10月更文挑战第31天】在数字时代的海洋中,网络安全犹如灯塔指引着信息的安全航行。本文将探讨网络安全的三大支柱:网络漏洞的防御策略、加密技术的应用以及提高个人和组织的安全意识。通过深入浅出的分析,我们将了解如何构建坚固的网络防线,保护数据不受威胁,并提升整个社会对信息安全的认识和重视。
下一篇
无影云桌面