国密算法签名与加密结果字节长度变化及Hex与Base64编码长度变化

这篇具有很好参考价值的文章主要介绍了国密算法签名与加密结果字节长度变化及Hex与Base64编码长度变化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有很多应用场景,数据通常经过加密和编码后传输,有时我们需要知道经过处理后的数据的长度,此时就需要分析各种算法的数据处理策略,及结果变化。下边主要介绍国密SM2算法签名与加密结果字节长度变化及Hex与Base64编码长度变化。

前提:

1,ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

2,UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节。

3,Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节。

数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

Hex16进制编码

1英文字符=1Byte=8bit 

1中文字符=3Byte=24bit

16进制采用0-F来表示,4bit可以表达16进制的值(0000~1111)。

故采用16进制编码1个字符后,会变成2个16进制符,相当于是增加了2倍的数据量。

Base64编码

Base64 编码是基于64个字符 A-Z,a-z,0-9,+,/ 的编码方式,因为2的6次方正好为64,所以就用6bit就可以表示出64个字符。
3Byte=24bit,正好可以表达Base64中4个字符。所以长度大概是字节数组的1.3333倍。

字符长度是3的倍数的,则编码后的长度计算公式为:

i/3*4

不是3的倍数的,则编码后的长度计算公式为:

i/3*4+4

其中i表示原字符个数,i/3取整。

sm2 base64,算法,安全,SM2,长度计算,算法

国密算法SM2签名

正常签名结果为64字节,但是由于签名后会做ASN.1编码,实际输出长度为70-72字节不等。

国密算法SM2加密

支持近128G字节数据长度,加密结果增加97个字节。

国密算法SM2加密+Base64编码后的数据增长量

按照每次加密增加97个字符计算,则最小的加密后长度为97或98,再将97带入Base64编码后的长度计算公式i/3*4+4=132,再按照132/97≈1.36,则原数据的最大增长量为1.36倍,后边随着原文长度增加,对应的增长量会变低。文章来源地址https://www.toymoban.com/news/detail-785331.html

到了这里,关于国密算法签名与加密结果字节长度变化及Hex与Base64编码长度变化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 加密算法、哈希算法及其区别+国密简介

    现代加密算法是信息安全领域中常用的算法,用于保护数据的机密性和完整性。以下是一些常用的现代加密算法: 目标 :加密算法的主要目标是保密性(Confidentiality),它用于将明文数据转换为密文数据,以确保只有授权的用户或实体可以解密和访问数据。加密算法的目标

    2024年02月07日
    浏览(28)
  • 国密算法 SM4加密算法 Python完整实现

    SM4算法是一种 对称加密算法 ,也被称为国密算法。它是由中国密码学家设计的,已被列入国家密码局的标准。 SM4算法使用 128位的密钥和分组大小 ,使用 32轮迭代 加密,可以用于加密数据和验证消息认证码。它的加密效率很高,安全性也很好,被广泛应用于各种安全领域,

    2024年02月11日
    浏览(34)
  • 国密SM2算法(JS加密,C#、Java解密)

    常见的渗透测试会将网站登录时密码使用明文传输视为风险。推荐使用国密算法或者RSA算法对密码进行加密传输。 RSA加密(JS加密,C#、Java解密)请参考《RSA对称加密(JS加密,C#、Java解密)》​​​​​​ 本文描述国密SM2算法的实现。 一、工作原理 前端js使用公钥进行加密

    2024年02月02日
    浏览(43)
  • 国密算法 SM4 对称加密 分组密码 python实现完整代码

    目前,python实现的国密算法库主要是 python-gmssl 库和 snowland-smx ( pysmx )库,二者都对SM2(仅公钥加解密和数字签名)、SM3、SM4进行了细致而优雅的实现。 GMSSL. https://github.com/duanhongyi/gmssl snowland-smx. https://gitee.com/snowlandltd/ snowland-smx-python PyCryptodome. https://www.pycryptodome.org 最近用

    2024年02月06日
    浏览(36)
  • java运用SM4国密算法对文件的加密与解密的实现

    首先我们在idae开发工具导入导入pom.xml的两个必要依赖  jar包下载地址:百度网盘 请输入提取码   npn8  图上systemPath 为jar包的文件路径,我们需要使用以下的路径存储jar包。(也可以自己设置) java包的文件路径如图所示 然后创建所需要加密的文件 ,需要加密的文件内容,

    2024年03月27日
    浏览(31)
  • 区块链中使用的加密算法和数字签名算法

    区块链中使用了多种加密算法和数字签名算法来确保数据的安全性、隐私性和可信性。以下是一些常见的加密算法和数字签名算法,它们在区块链技术中的应用: 哈希算法(Hash Functions) : 常见的哈希算法包括 SHA-256(Secure Hash Algorithm 256位)和 SHA-3(Keccak)等。 哈希算法用

    2024年02月04日
    浏览(37)
  • 算法2_非对称加密算法之ECDSA(椭圆曲线数字签名算法)

    ECDSA(椭圆曲线数字签名算法) AES(高级加密标准): =对称加密 ​ 对业务数据进行加密,防止他人可以看见 ECDSA(椭圆曲线数字签名算法):=非对称加密算法(公钥和私钥) ​ 验证数据的真实性,防止业务数据被篡改 SHA(安全哈希算法)=哈希算法 1. 作用: 因为ECDSA椭圆曲线数字签名算法获得

    2024年02月02日
    浏览(48)
  • 使用 Java Bouncy Castle实现国密算法SM4、SM3以及SM2的加密

    国密算法的实现借助了Java库函数 Bouncy Castle,加密库安装使用教程请参考链接 SM4,又称为商密算法,是一种分组密码算法,于2012年由中国密码技术研究中心(中国密码学会成员)发布,目前已成为我国国家密码算法,并在多个领域得到了广泛的应用。SM4算法采用了32轮迭代结

    2024年02月16日
    浏览(30)
  • 密码学概念科普(加密算法、数字签名、散列函数、HMAC)

    密码散列函数 (Cryptographic hash function),是一个单向函数,输入消息,输出摘要。主要特点是: 只能根据消息计算摘要,很难根据摘要反推消息 改变消息,摘要一定会跟着改变 对于不同的消息,计算出的摘要几乎不可能相同 根据散列函数的上述特点,可以应用在保存密码、数

    2024年02月10日
    浏览(36)
  • Vue+Springboot前后端完整使用国密算法SM2双公私钥对数据加密传输交互完整解决方案

    Vue+Springboot 前后端完整使⽤国密算法SM2双公私钥对数据加密传输交互完整解决⽅案项⽬,特别是企事业单位的项⽬,第三方测试公司做安全测试时,常常要求使用国密算法,因涉及服务端和客户端的交互,传递关键数据时要求使用SM2非对称加密。 引入相关依赖 这里我使用的

    2024年01月23日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包