SM2加密算法的公私钥和密文格式以及不同编程语言之间无法互相解密问题分析

1 文章介绍

  • 本文章主要介绍了SM2加密算法的公钥、私钥和密文格式,以及对于不同编程语言之间无法互相解密问题进行了分析和处理。

2 SM2加密算法格式

2.1 公钥格式

  • SM2公钥是SM2曲线上的一个点,由横、纵坐标两个分量来表示,简记为Q,每个分量长度为256位,即32个字节。内容格式为:04||X||Y,其中X和Y分别表示公钥的x分量和y分量,其长度各为256位,04表示非压缩。

  • 通过以上网站来生成一个公钥看下

  • 在这里插入图片描述

  • 生成了一个65个字节长度的公钥,以04开头,后面跟公钥的X和Y分量,长度分别为32个字节。

    •   04CBA482D99DC506D3BDFE85F950E4422DD11965D78D25795D9298148628A1CF5D47F8F0B1ABC2855CCEB0B0F1774FCA326C0489DCC09D3894D422CAA52DFBCB8A
      

2.2 私钥格式

  • 私钥格式比较简单,如上所示,长度为32个字节。
    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 打赏
      打赏
    • 0
      评论
    SM2公钥加密算法是一种非对称加密算法,用于对消息进行加密和解密。下面详细描述其原理、特性以及重要参数: 1. 原理: - 随机生成私钥dA,并通过椭圆曲线运算生成公钥PA。 - 加密时,接收方B使用A的公钥PA对待加密的消息进行加密。 - 随机选择整数k,计算椭圆曲线上的点C1 = [k]G和C2 = M ⊕ KDF([k]PB)。 - 加密结果为(C1, C2),即为消息的加密结果。 - 解密时,接收方B使用自己的私钥dB和C1进行计算,得到共享密钥K = [dB]C1。 - 使用共享密钥K对C2进行解密操作,得到原始消息M。 2. 特性: - 安全性:SM2基于椭圆曲线离散对数问题,具有较高的安全性,能够抵抗各种攻击。 - 灵活性:SM2公钥加密算法支持不同长度的明文和密文,适用于各种应用场景。 - 抗中间人攻击:通过接收方使用自己的私钥进行解密,可以防止中间人窃取密文。 3. 重要参数: - G:椭圆曲线上的基点。 - n:椭圆曲线上的阶,表示曲线上的点个数。 - dA:发送方A的私钥,随机生成的一个整数。 - PA:发送方A的公钥,由私钥通过椭圆曲线点乘运生成。 - dB:接收方B的私钥,随机生成的一个整数。 - PB:接收方B的公钥,由私钥通过椭圆曲线点乘运生成。 - k:加密时随机选择的整数。 - C1:加密结果中的椭圆曲线上的点。 - C2:加密结果中的密文。 通过以上原理、特性和重要参数,SM2公钥加密算法实现了对消息的加密和解密,确保了消息的保密性和安全性。同时,算法具备抗中间人攻击的特性,适用于各种安全通信场景。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    大草原的小灰灰

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值