密码学中的SM2

国密算法SM2的优势、原理和应用场景 专注AI生成Java函数的FuncGPT(慧函数)是飞算SoFlu软件机器人推出的函数AI 生成器,支持所有类型函数创建,通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。期待与你的互动与讨论。综上所述,这段代码具有良好的代码可读性和健壮度,并且使用了标准的Java类库和BouncyCastle提供的类库,确保了代码的正确性和安全性。2、对于SM2加密算法的实现,使用了BouncyCastle提供的SM2Engine类和相关的参数类,确保了加密算法的正确性和安全性。 阅读详情
AI摘要

SM2是一种基于椭圆曲线的非对称加密算法,用于数字签名、密钥交换和加密。它涉及到密钥生成、加解密和数字签名的过程,其中基点G的生成和模数p的选择对算法安全性和性能至关重要。SM2的加密过程包括生成临时密钥、点运算和哈希运算,而解密过程则涉及私钥的使用。数字签名通过私钥对数据进行签名,接收方使用公钥验证。算法的安全性基于椭圆曲线离散对数问题的难度。

 目录

概述

功能

密钥生成

基点G的生成

模数p

密钥生成过程

加解密

加密过程:

解密过程:

数字签名

概述

对第5步r的计算方式分析

对第6步s的计算方式分析

加密模式

优缺点

论文和研究方向推荐

论文

 研究方向 


概述

SM2是中国密码学算法标准中的一种非对称加密算法,它是由国家密码管理局(中国密码局)发布的一种椭圆曲线公钥密码算法。SM2基于椭圆曲线离散对数问题,主要用于数字签名、密钥交换和加密等密码学应用。

以下是SM2算法的主要特点和原理:

  1. 非对称加密:SM2使用非对称密钥加密体制,包括公钥和私钥。公钥用于加密数据和验证数字签名,私钥用于解密数据和生成数字签名。

  2. 椭圆曲线密码学:SM2基于椭圆曲线密码学,通过椭圆曲线上的点运算来实现加密和解密操作。SM2采用的是素数域上的椭圆曲线,具体是由国家密码管理局指定的一条256位的椭圆曲线。

  3. 安全性:SM2具有较高的安全性。它使用的椭圆曲线离散对数问题被认为是难以解决的数学难题,可以提供强大的安全性保障。同时,SM2还采用了一系列安全性增强措施,如密钥派生函数和随机数生成算法,以防止各种攻击。

  4. 数字签名:SM2可以用于生成和验证数字签名。发送方可以使用私钥对数据进行签名,接收方使用相应的公钥来验证签名的有效性。数字签名可以确保数据的完整性和身份认证,防止数据被篡改或冒充。

  5. 密钥交换:SM2还可以用于密钥交换,双方可以使用各自的私钥和对方的公钥来生成一个共享密钥,用于后续的对称加密通信。

SM2作为中国密码学标准的一部分,被广泛应用于各种信息安全领域,包括电子商务、移动支付、互联网金融等。它具有较高的安全性和性能表现,并得到了国际密码学界的认可和关注。


功能

  1. 密钥生成:

    • 随机选择一个私钥(随机数),通常是一个256位的随机数。
    • 使用椭圆曲线上的点运算,将私钥与基点(椭圆曲线上的固定点)相乘,得到公钥。公钥是一个曲线上的点,可以表示为(x, y)坐标。
  2. 加密:

    • 随机选择一个临时私钥(临时随机数),通常是一个256位的随机数。
    • 使用临时私钥与基点相乘,得到临时公钥。
    • 将明文数据转换为椭圆曲线上的点(编码)。
    • 生成一个随机数k,与临时公钥进行点运算,得到C1点。
    • 使用接收方的公钥进行点运算,将C1点与明文数据进行异或运算,得到C2点。
    • 使用临时私钥与C1点相乘,得到一个数值。
    • 对C2点和该数值进行哈希运算,得到C3点。
    • 将C1、C2和C3点组成密文。
  3. 解密:

    • 使用私钥与C1点相乘,得到一个数值。
    • 对C2点和该数值进行哈希运算,得到C3点。
    • 将C1、C2和C3点组成密文。
    • 使用接收方的私钥与C1点相乘,得到临时公钥。
    • 使用临时公钥进行点运算,将C1点与C2点进行异或运算,得到明文数据。
  4. 数字签名:

    • 对待签名数据进行哈希运算,得到哈希值。
    • 随机选择一个数值k,与基点相乘,得到点(x1, y1)。
    • 将x1的值与哈希值进行异或运算,得到一个数值。
    • 计算该数值的模反函数,得到另一个数值。
    • 将哈希值与另一个数值进行相乘,得到一个数值。
    • 使用私钥与该数值相乘,得到一个数值。
    • 使用点(x1, y1)与该数值进行点运算,得到点(x2, y2)。

将x2的值与哈希值进行比较,如果相等,则签名有效。


在SM2算法中,加密和解密是绑定在一起的,需要使用一对密钥,即公钥和私钥。发送方使用接收方的公钥进行加密,接收方使用自己的私钥进行解密。因此,加解密是作为一个整体功能进行使用的。

数字签名功能是可以独立使用的。发送方可以使用自己的私钥生成数字签名,并将签名附加在数据上发送给接收方。接收方使用发送方的公钥来验证数字签名的有效性,从而确保数据的完整性和身份认证。

密钥生成是SM2算法的前置步骤,它用于生成一对公钥和私钥。这对密钥可以用于后续的加解密和数字签名操作。因此,密钥生成是一个单独的功能,它为之后的加解密和数字签名提供了必要的密钥。

综上所述,可以将SM2的加解密作为一个绑定的功能,数字签名作为一个独立的功能,并单独考虑密钥生成作为另一个功能。


密钥生成

基点G的生成

基点G(也称为生成点、基点或基础点)是椭圆曲线上的一个特殊点,用于执行关键的操作和生成密钥对。

基点G的主要用途有两个:

  1. 密钥生成:基点G可以用作生成密钥对的基础。通过在椭圆曲线上对基点G进行重复的点运算,可以生成一系列相关的点,其中的某些点可用作公钥,另一些点可用作私钥。

  2. 密钥交换:基点G还可以用于执行密钥交换协议。参与者可以利用基点G和一些算法,通过交换计算的中间结果,最终协商出共享的密钥。

每个椭圆曲线都有一个对应的基点G(一对一的),这个基点是特定椭圆曲线上的一个固定点。基点G是椭圆曲线密码学中非常重要的组成部分,它定义了椭圆曲线上的加法运算和密钥生成过程。

通常,在设计椭圆曲线时,会选择一个合适的素数域模数p和相应的椭圆曲线方程。然后,根据特定的算法和安全要求,计算出一个合适的基点G,并确保它满足一些数学性质,如阶(order)和循环性。

一个模数p和一个椭圆曲线方程可以唯一确定一个基点G。 

基点G是曲线上的一个特殊点,它需要满足一些附加条件才能成为合适的基点。这些条件包括:

  1. 在椭圆曲线上:基点G必须位于椭圆曲线上,即满足椭圆曲线方程。

  2. 有合适的阶(order):基点G的阶是指它与自身的倍数相加的结果的个数。一个好的基点应该有一个适当大的阶,以提供足够的安全性。

  3. 循环性:基点G的倍数相加应该能够遍历曲线上的所有点,不会出现重复的点。这种循环性是基于基点G的阶。

假设我们有一个椭圆曲线方程为:

E: y^2 = x^3 + ax + b

其中,a和b是曲线的系数。

  1. 首先,需要选择一个合适的素数域的模数p,以及系数a和b的取值。

  2. 根据选择的模数p和系数a、b,计算出满足椭圆曲线方程的所有点的集合。

  3. 接下来,需要计算椭圆曲线的阶。阶是指基点G与自身的倍数相加所能生成的点的个数。

  4. 从曲线上选择一个点P作为候选的基点。

  5. 对于点P,进行倍点运算,即将点P与自身相加,得到2P、3P、4P,依此类推,直到计算得到一个循环的效果,即nP = O,其中O表示无穷远点(曲线上不存在的特殊点)。

  6. 如果得到的循环的长度等于阶,那么点P就可以作为基点G。

总结来说,通过椭圆曲线的方程,我们可以计算出满足方程的所有点的集合。然后,在这些点中选择一个候选的基点,并进行倍点运算,验证是否满足循环的条件。如果满足循环的条件,那么该点就可以作为椭圆曲线的基点G


模数p

模数p在椭圆曲线密码学中扮演着重要的角色,具有以下几个作用:

  1. 定义域限制:模数p确定了椭圆曲线方程中的坐标值的范围。椭圆曲线的点坐标通常是模p的剩余类(residue class),即在0到p-1之间的整数。这样,模数p限制了椭圆曲线上的点在哪个有限域上运算。

  2. 安全性:选择适当的模数p对椭圆曲线密码学的安全性至关重要。模数p的大小应根据安全要求来确定,通常应该是一个大素数。较大的模数可以增加椭圆曲线离散对数问题的计算复杂度,提供更高的安全性。

  3. 运算性能:模数p的大小也会影响椭圆曲线的计算性能。较小的模数可以加快计算速度,但可能会降低安全性。选择合适的模数需要在安全性和性能之间进行权衡。

  4. 数字表示和存储:模数p决定了椭圆曲线上的点在计算机系统中的表示和存储方式。通常,点坐标需要使用固定长度的二进制表示,模数p决定了这个长度。


密钥生成过程

SM2算法的密钥生成过程如下:

  1. 选择椭圆曲线参数:选择一个适当的椭圆曲线作为密码学基础,SM2标准中规定了一条256位的椭圆曲线。

  2. 生成私钥:随机选择一个私钥d,通常是一个256位的随机数。

  3. 计算公钥:使用椭圆曲线上的点运算,将基点G(椭圆曲线上的固定点)与私钥d相乘,得到公钥Q。具体计算公式为 Q = d * G。

  4. 公钥编码:将公钥Q的坐标(x, y)进行编码,常用的编码方式为压缩编码或非压缩编码。

示例:

假设我们选择了一条椭圆曲线,其参数为:

曲线方程:y^2 = x^3 + ax + b

椭圆曲线参数:a = 0,b = 7

基点G的坐标:(x_G, y_G)

  1. 选择私钥: 私钥d = 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

  2. 计算公钥: 进行椭圆曲线上的点运算,将基点G与私钥d相乘。 Q = d * G

  3. 公钥编码: 将公钥Q的坐标(x_Q, y_Q)进行编码,得到最终的公钥。

例如,压缩编码方式下,公钥的编码形式为:公钥 = 02 || x_Q(其中02表示y坐标为偶数)。

这样,我们就完成了SM2算法的密钥生成过程。通过随机选择私钥,再经过椭圆曲线上的点运算,我们可以得到一对公钥和私钥,用于后续的加解密和数字签名操作。


对公钥进行编码是为了在实际应用中更方便地传输和存储公钥信息。

在椭圆曲线密码学中,公钥通常由椭圆曲线上的一个点表示,该点的坐标是一个有限域中的元素。公钥的坐标可以是(x, y)形式的非压缩表示,也可以是压缩表示,只包含其中一个坐标和一个标志位。

在SM2算法中,为了减少公钥的传输大小和存储空间,通常使用压缩编码或非压缩编码方式对公钥进行表示。压缩编码只包含一个坐标和一个标志位,而非压缩编码则包含两个坐标。

通过编码,公钥的表示形式变得更紧凑,占用的空间更小,有助于提高效率和降低资源消耗。在实际使用中,编码后的公钥可以更方便地传输、存储和处理。

需要注意的是,在使用公钥进行加密、数字签名验证等操作时,需要根据编码方式对公钥进行解码,以恢复到椭圆曲线上的点形式进行运算。


加解密

SM2算法的加解密过程如下:

加密过程:

 现在我们有一个基点G,还有基点G的阶n(即nG=O,O为无穷远点)

选择一个随机数k,1<=k<=n-1

C1=kG,又因为kG肯定不为O,所以kG对应着椭圆曲线中的一个点,设为(x1,y1)

所以可以看作将(x1,y1)表示为比特串,这个比特串为C1

S的作用是作为数字签名,接收方可以自行再计算一个S来和收到的S进行对比,如果相同,就没问题

t其实就相当于加密密钥,算出来t与明文M异或就可以得到密文

因为基点G,发送方是不会发送给接收方的,但是没有G又无法解密,C1的作用是可以在不需要基点G的情况下进行解密(这地方我当时卡了十几分钟都没明白C1是干啥的)


 在SM2算法中,加密后的密文C由三个部分组成:

  1. C1:这是一个椭圆曲线上的点,表示加密过程中生成的临时公钥点Q'。这个点的坐标可以用压缩或非压缩编码表示。

  2. C2:这是一个椭圆曲线上的点,表示加密后的数据。它与明文数据M进行异或运算后得到。C2 = M ⊕ (Q' * Pb),其中Pb是接收方的公钥点。

  3. C3:这是一个哈希值,用于验证密文的完整性。H是对C2点和临时私钥与C1点的运算结果进行哈希运算得到的。

解密过程:

(但是我按照书上的算法列出了两个S的计算方式,S的相同需要k和d_B数值相同,这一点我也没搞明白) 

通过这个图应该可以看出C1的作用,可以避免传输G,又可以进行解密


数字签名

概述

 

 第4步目的还是在避免传输基点G的条件下帮助解码


对第5步r的计算方式分析

在SM2数字签名算法中,计算参数 r = (e + x) mod n 的目的是为了生成签名中的 r 值,其中 e 是哈希值 H 的整数表示,x 是临时公钥 K 的 x 坐标,n 是曲线的阶数。下面是每个参数的具体作用:

  1. 哈希值 H (e):

    • 哈希值 H 是对待签名的消息进行哈希运算后得到的结果。
    • 它确保了消息的完整性和唯一性。
    • 在签名过程中,将哈希值 H 用作计算参数 r 的一部分,确保签名与消息相关联。
  2. 临时公钥的 x 坐标 (x):

    • 在签名过程中,通过临时私钥 k 计算临时公钥 K = k * G。
    • 临时公钥 K 的 x 坐标 x 被用作计算参数 r 的一部分。
    • 这样可以确保签名的随机性和唯一性,因为每次使用不同的临时私钥 k,都会生成不同的临时公钥 K。
  3. 曲线的阶数 n:

    • 曲线的阶数 n 表示椭圆曲线上点的数量。
    • 在签名过程中,n 用作计算参数 r 的模数,即进行取模运算。
    • 这确保了计算出的 r 值在一定范围内,并且与曲线的特性相对应。

综上所述,计算参数 r = (e + x) mod n 的过程中,哈希值 H、临时公钥的 x 坐标 x 和曲线的阶数 n 扮演着重要的角色:

  • 哈希值 H 保证了签名与消息相关联,确保签名的唯一性。
  • 临时公钥的 x 坐标 x 增加了签名的随机性和抗攻击性。
  • 曲线的阶数 n 用于将计算结果限制在一定范围内,符合椭圆曲线的特性。

这些参数的选择和计算是为了增加签名的安全性、随机性和可验证性,使得SM2数字签名算法具备良好的性质和保护特性。


对第6步s的计算方式分析

在SM2数字签名算法中,计算参数 s 的目的是生成签名中的 s 值,其中 d 是私钥,k 是临时私钥,r 是签名参数。下面是每个参数的具体作用:

  1. 私钥 d:

    • 私钥 d 是签名者拥有的私密信息,用于生成对应的公钥。
    • 在计算参数 s 时,私钥 d 被用作计算的一部分。
  2. 临时私钥 k:

    • 临时私钥 k 是在签名过程中生成的一个随机数。
    • 它用于计算临时公钥 K = k * G 和生成签名中的 r 值。
  3. 签名参数 r:

    • 签名参数 r 是在签名过程中计算得到的,与临时公钥的 x 坐标相关。
    • 它用于验证签名的有效性。
  4. 曲线的阶数 n:

    • 曲线的阶数 n 是椭圆曲线上点的数量,它也用作计算参数 s 的模数。

现在来解释计算参数 s = ((1 + d)^(-1) * (k - r * d)) mod n 的作用:

  • ((1 + d)^(-1) * (k - r * d)) 表示一系列运算,包括私钥 d 和临时私钥 k 的运算。
  • (1 + d)^(-1) 是私钥 d 加一的逆元素,即 (1 + d) 的模逆,它的作用是确保计算参数 s 时的数学运算可逆。("可逆" 这个特性是为了确保计算参数 s 的数学运算在验证过程中是可逆的,使得签名的验证能够得到正确的结果,并保证了签名的可靠性和可验证性。)
  • (k - r * d) 是临时私钥 k 减去 r 与私钥 d 乘积的结果,它的作用是确保计算参数 s 时包含了临时私钥 k 和签名参数 r 的信息。

最后,通过对计算结果进行取模运算 ((1 + d)^(-1) * (k - r * d)) mod n,保证了计算得到的参数 s 在一定范围内,并符合椭圆曲线的特性。

综上所述,计算参数 s 的过程中,私钥 d、临时私钥 k、签名参数 r 和曲线的阶数 n 扮演着重要的角色:

  • 私钥 d 用于参与计算,确保签名的安全性和私密性。
  • 临时私钥 k 和签名参数 r 用于计算 s,增加了签名的随机性和抗攻击性。
  • 曲线的阶数 n 用于将计算结果限制在一定范围内,符合椭圆曲线的特性。

这些参数的选择和计算是为了增加签名的安全性、随机性和可验证性,使得SM2数字签名算法具备良好的性质和保护特性。


加密模式

在SM2算法中,有两种主要的加密模式用于加密数据,分别是C1C2C3模式(密文格式1)和C1C3C2模式(密文格式2)。

1. C1C2C3模式(密文格式1):
   - C1:随机生成的曲线上的点,用于混淆加密结果。它不直接包含加密数据,而是用于提供混淆和保护密文的安全性。
   - C2:加密后的密文数据。这是对原始数据使用SM4对称加密算法进行加密得到的结果。
   - C3:对加密数据的MAC值(消息认证码)。MAC用于验证数据的完整性和防止篡改。通过对加密数据进行消息认证,可以确保数据在传输过程中没有被篡改。

   这种模式适用于对称加密的情况,其中使用SM4对称加密算法对数据进行加密。C1C2C3模式提供了数据机密性和完整性的保护。

2. C1C3C2模式(密文格式2):
   - C1:随机生成的曲线上的点,用于混淆加密结果。
   - C3:对加密数据的MAC值(消息认证码)。与密文格式1相比,C3的位置发生了变化。
   - C2:加密后的密文数据。这是使用SM2非对称加密算法对原始数据进行加密得到的结果。

   这种模式适用于非对称加密的情况,其中使用SM2非对称加密算法对数据进行加密。C1C3C2模式也提供了数据机密性和完整性的保护,但与密文格式1相比,MAC值的位置发生了变化。

总的来说,这两种密文格式在加密过程中采用了不同的顺序和位置安排,但都保证了加密数据的机密性和完整性。具体选择哪种模式取决于应用场景和使用需求。


在C1C2C3模式中,先生成随机的曲线上的点C1,然后对原始数据使用SM4对称加密算法进行加密得到C2,最后计算加密数据的MAC值得到C3。

而在C1C3C2模式中,同样先生成随机的曲线上的点C1,然后对原始数据计算MAC值得到C3,最后再使用SM2非对称加密算法对原始数据进行加密得到C2。

两种模式对于C2、C3的计算的输入数据不同,一个是加密后的,一个是加密前的


优缺点

C1C2C3模式和C1C3C2模式在应用场景、优点和缺点方面有一些差异。以下是它们的一些特点:

C1C2C3模式(密文格式1):
- 应用场景:适用于对称加密的情况,其中使用SM4对称加密算法对数据进行加密。
- 优点:
  - 提供机密性:使用对称加密算法对数据进行加密,确保数据的保密性。
  - 防篡改:通过计算MAC值,能够验证数据的完整性,防止数据在传输过程中被篡改。
- 缺点:
  - 密文长度增加:由于需要包含C1、C2和C3,密文的长度相对较长。
  - 仅适用于对称加密:该模式仅适用于对称加密算法,无法直接用于非对称加密算法。

C1C3C2模式(密文格式2):
- 应用场景:适用于非对称加密的情况,其中使用SM2非对称加密算法对数据进行加密。
- 优点:
  - 机密性和完整性:同样提供了机密性和完整性的保护,通过非对称加密算法和MAC值的计算。
  - 简化解密过程:密文格式中C3位于C2之前,使得解密时先验证完整性,然后再进行解密操作。
- 缺点:
  - 密文长度增加:与C1C2C3模式相同,密文长度相对较长。
  - 仅适用于非对称加密:该模式仅适用于非对称加密算法,无法直接用于对称加密算法。

总体而言,选择使用哪种模式应基于具体的应用需求和标准规范。如果需要对称加密,可以选择C1C2C3模式;如果需要非对称加密,可以选择C1C3C2模式。同时,需要考虑密文长度和解密过程的复杂性。

论文和研究方向推荐

论文

  1. "SM2密码算法在商用密码应用设计中的应用",作者:王小云,刘军。该论文介绍了SM2算法的设计和实现,包括其密码学原理、密钥生成、加密和数字签名等内容。它提供了对该算法的全面理解。

  2. "SM2密码系统的安全分析",作者:赖学嘉,王小云,冯登国。该论文对SM2算法进行了安全性分析,包括对其密钥长度、抵抗各种攻击和潜在漏洞的评估。它提供了对SM2算法的密码学强度和安全性的洞察。

  3. "SM2加密算法的高效安全椭圆曲线实现",作者:龚光,乔克新。该论文侧重于SM2算法的高效实现,提供了在椭圆曲线上进行算术运算的优化技术。它讨论了实际实现的性能改进和安全性考虑。

  4. "SM2数字签名算法的高效实现",作者:杨波,刘树青,文伟强。该论文着重于SM2数字签名算法的高效实现,包括签名生成和验证的优化。它讨论了诸如基于窗口的标量乘法和预计算表等技术。

  5. "SM2密码算法及其应用概述",作者:曹志刚,陈克非,桂小林。该论文概述了SM2算法的特点、安全性和各种应用。它讨论了SM2在中国的应用以及其在国际标准化方面的潜力。

 研究方向 

  1. 椭圆曲线密码学:研究椭圆曲线的数学性质、算法和应用,包括椭圆曲线的参数选择、加密算法和数字签名等方面。

  2. 密码算法分析与设计:对SM2算法进行更深入的安全性分析,包括密钥长度、抗攻击性能和抗侧信道攻击等方面的研究,以进一步提高算法的安全性。

  3. 密码协议与安全通信:研究基于SM2算法的密码协议设计,包括密钥交换、认证协议和安全通信协议等方面,以确保通信的机密性、完整性和认证性。

  4. 高效实现与优化:针对SM2算法的实际应用需求,研究算法的高效实现和优化技术,包括硬件加速、软件优化、并行计算等方面,以提高算法的性能和效率。

  5. 标准化与应用推广:研究将SM2算法作为密码学标准应用于实际系统和应用中的方法和机制,包括标准化过程、规范制定、应用推广和安全性评估等方面。

SM2椭圆曲线公钥密码算法--密钥对与数字签名 SM2算法全称是SM2椭圆曲线公钥密码算法(SM是商用密码的拼音缩写),是一种基于“椭圆曲线”的密码ECC(Elliptic Curve Cryptography)。2016年,SM2成为中国国家密码标准。 在商用密码体系中,SM2主要用于替换RSA加密算法。主要介绍SM2国密密钥对与数字签名算法原理。 阅读详情

相关推荐

国密:生成SM2秘钥、加解密及加验签

简述国密SM2的公私钥生成以及加签验签。

Su7148的博客 2万+

国密SM2算法进行数据的加密、签名和验签、解密

国密SM2算法的研究使用(springboot环境)

卓越之识论道,平常之识论事,狭隘之识论人 4万+

电子发票背后的密码学:深入解析国密算法SM2在OFD文件中的应用

本文深入解析了国密算法SM2在OFD格式电子发票中的应用机制。文章从密码学原理出发,详细阐述了SM2算法如何作为电子发票的信任基石,并结合OFD文件结构,剖析了数字签名的提取、解析与验证全流程,揭示了其确保发票真实性、完整性与不可抵赖性的核心技术。

weixin_29323365的博客 673

sm2和sm4加密算法浅析

sm2和sm4加密算法浅析 一: SM2 简介:SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法 ,SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。 SM2和RSA算法比较 SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小 ①:加密算法以及流程: 输入:需要发送的消息为比特串M,klen为M的比特

Know Destiny的博客 5万+

C/C++实现ECC、ECDSA、SM2与ElGamal:从原理到代码的密码学实战

非对称加密是现代信息安全体系的基石,它解决了在不安全信道中安全传输密钥和验证身份的核心难题。其原理基于数学上的单向陷门函数,如大整数分解或椭圆曲线离散对数问题,确保公钥可公开而私钥必须保密。这项技术的核心价值在于为数字签名、密钥协商和数据加密提供了理论支撑,广泛应用于数字证书、安全通信和区块链等领域。本文聚焦于椭圆曲线密码学(ECC)这一高效的非对称加密体系,通过C/C++语言亲手实现其核心算法,深入剖析ECDSA签名、国密SM2标准以及ElGamal加密等关键技术的工程细节与差异,帮助开发者从底层理解密码

weixin_33646989的博客 312

深入了解 SM2 算法:中国的密码学标准

SM2算法是一种基于椭圆曲线密码的公钥加密算法,由国家密码管理局发布。它包括数字签名、密钥交换和公钥加密三个部分。本文将详细介绍SM2算法的原理、实现以及应用场景。

LWJLWJ_的博客 6542

密码学基础-公钥密码与RSA、SM2算法设计原理

公钥密码学是数字信任的基石,而RSA与SM2分别代表了经典与创新的技术路线。RSA的广泛应用验证了其可靠性,而SM2作为中国密码技术的突破,正以更高的效率和安全性引领国产化替代浪潮。在技术自主与全球化并行的今天,深入理解这两大算法,不仅是技术人员的必修课,更是守护数字主权的重要一环。

Sensitive_web_chaser的博客 1068

Ubuntu下NVIDIA驱动安装全攻略:从报错到完美运行nvidia-smi的完整流程

本文提供了在Ubuntu系统中安装NVIDIA驱动的完整解决方案,重点解决因驱动版本冲突、内核模块未加载或Secure Boot安全启动导致的`nvidia-smi`报错问题。通过彻底清理旧驱动、处理Secure Boot、选择兼容版本并正确安装,最终确保驱动完美运行。

weixin_29196891的博客 364

非对称加密算法(RSA、ECC、SM2)——密码学基础

非对称加密是现代密码学的基石,它使用一对密钥(公钥和私钥)进行加密和解密操作。与传统的对称加密不同,非对称加密解决了密钥分发的难题,为互联网安全通信奠定了基础。

开源AI 专属 UI——papyrai-ui。《千界明彻录》(故事形式构建元思维)——胡说小说。更多思辨内容在公众号。 4233

别再让充电器‘罢工’了!聊聊Charger里VIN-DPM这个不起眼但关键的功能

本文深入探讨了充电IC中的VIN-DPM(输入电压动态电源管理)功能,揭示其如何智能调节充电策略以避免电源适配器过载。通过实际案例和实验室数据,展示了VIN-DPM在提升充电稳定性和效率中的关键作用,并提供了选型、设计和故障排查的实用指南。

weixin_33738578的博客 416

使用WSL2安装ubuntu系统并配置深度学习环境

wsl2安装ubuntu部署深度学习环境的方法

u013358093的博客 2700

HarmonyOS NEXT 椭圆曲线密码学应用:ECC 与 SM2 深入剖析

例如,在移动支付场景中,ECC 算法确保了交易信息的安全传输和数字签名的有效性,保护用户的资金安全和隐私。它与 ECC 算法既有共同的优势,又在算法标准、参数选择和应用侧重等方面有所不同,为 HarmonyOS NEXT 在国内的广泛应用提供了坚实的安全保障,确保了数据在各种应用场景下的保密性、完整性和真实性。而 SM2 是我国自主研发的椭圆曲线公钥密码算法,具有自主知识产权,是我国密码体系中的重要组成部分,主要应用于国内的信息安全领域,如政府、金融、电信等行业,以保障国家关键信息基础设施的安全。

xinyuan82的博客 815

【OpenCV3】cv::compare()使用详解

cv::compare()主要用于两个图像之间进行逐像素的比较,并输出比较的结果。具体用法如下: cv::compare() bool cv::compare( cv::InputArray src1, // 输入数组1 cv::InputArray src2, // 输入数组2 cv::OutputArray dst, // 输出数组 int cmpop // 比较操作子,见下表 ...

guduruyu的专栏 9757

h sm2 曲线参数_椭圆曲线密码学简介(二)签名与验签名

上次写了椭圆曲线密码学的基础知识椭圆曲线密码学简介(一),这次写一下椭圆的应用--签名和验签。1为什么要做数字签名下图是非对称加解密(如 RSA 或 ECC 等),Bob使用 Alice 的公钥(Public Key)对消息进行加密,然后将加密后的信息发送给 Alice,Alice 收到消息后使用私钥(Private Key)对消息进行解密,即可得到 Bob 想发送给她的信息,这就是非...

weixin_39603132的博客 835

Cursor 详细使用

Cursor 是一款基于 VSCode 开发的 AI 驱动代码编辑器,集成 GPT-4、Claude3.5 等先进 LLM,具备代码补全、生成、解释、调试等功能,可提升开发效率和代码质量。3. 代码编辑:在编辑区编写代码,利用快捷键提升效率,如 Ctrl+Space 触发智能代码补全、Ctrl+K 润色或修改代码、Ctrl+L 智能问答与代码编辑。3. 代码解释:选中代码,按 Ctrl+L,输入如 “解释这段代码的功能”,Cursor 会给出详细解释。

坚持写博客,大家的关注是我前进的动力! 4811

BrepNet实战:5分钟搞定三维CAD模型的加工特征识别(附Python代码)

本文详细介绍了BrepNet在三维CAD模型加工特征识别中的实战应用,通过Python代码演示了从环境搭建到模型训练的全流程。BrepNet基于边界表示(BRep)的深度学习框架,能够高效识别加工特征,显著提升工业设计和智能制造领域的效率。文章还提供了性能优化和部署建议,帮助开发者快速实现AI驱动的几何特征识别。

weixin_29044713的博客 506

【区块链与密码学】第8-5讲:基于SM2签名算法的环签名

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 8.5基于SM2签名算法的环签名 首先,我们来回顾一下SM2签名算法 曲线参数 SM2标准推荐使用256位素域Fp上的椭圆曲线y2=x3+ax+b,其中: 密钥生成算法 签名算法 验证算法 接收到的消息为M′,签...

Digquant的博客 805

RH850从0搭建Autosar开发环境【1】- 如何创建Davinci Configurator配置工程

当我们在公司接触Autosar开发环境时,基本都是完整的Davinci Configurator的配置工程,我们只能修修补补。 从本章开始将手把手搭建Rh850基于Vector公司Davinci Configurator的autosar配置工程。主要涉及到OS,COM,DCMM,NVM,BSWM,ECUM等基本模块,包括Vlink,memap使用,XCP标定的实现等。基本是实现一个基础版的项目开发。包括后期的GreenHills编译问题处理,生成最终的Hex文件。

weixin_42412049的博客 1万+

推荐开源项目:SM2_SM3_SM4Encrypt —— 安全可靠的国产密码学工具库

推荐开源项目:SM2_SM3_SM4Encrypt —— 安全可靠的国产密码学工具库 项目简介 如果你在寻找一套全面的国产加密算法实现,那么SM2_SM3_SM4Encrypt绝对值得你关注。这是一个开源项目,专注于提供SM2、SM3和SM4等国家密码标准的加密、解密、签名和验签功能。开发者在无法直接访问硬件加密机的情况下,设计了一套软加密实现,使得在测试环境中也能顺利进行国密算法的相关操作。 项...

gitblog_00022的博客 753

基于江协科技STM32创建HAL库工程模板

基于江协科技STM32入门教程创建的HAL库工程模板

2401_82728381的博客 1130

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MiniMind-V 自定义训练指南:用你的数据集适配自己的 VLM 任务

MiniMind-V 让你在 2 小时内从 65M 参数的基座权重训出一个能看图、能对话的视觉语言模型,全程只需一条训练命令加一份 parquet 数据。 ## 🎯 它适合解决什么问题 - 用自有图文数据训练垂直场景的看图问答,如商品图描述、医疗影像初筛 - 验证"视觉编码器 + 投影层 + 小 LLM"这条训练链路,成本约 2 小时、一张消费级显卡 - 小团队低成本复现多模态训练流程:预训

gitblog_00421的博客 924

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

应用密码学—国密GmSSL SM2

在写作业时候没有找到合适的文章,所以决定自己把写完的内容分享下。

2402_83322127的博客 484

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【应用密码学】实验八 数字签名——SM2

【应用密码学】实验八 数字签名——SM2。终于结束实验早八了!!!

xinghuayu_lin的博客 1168

密码学算法之 SM2国密算法

一、SM2 国密算法介绍: &quot;&quot;&quot; SM2 国密非对称加密算法,属于椭圆曲线密码体制(ECC) Author:John 基于椭圆曲线的离散对数难题,目前 SM2 256 bit 加密算法是相当安全的,相当于 RSA 2048 bit 及以上的安全性 有公钥、私钥之分,公钥给别人,可以在一定范围内公开,私钥留给自己,必须保密。由私钥可以计算公钥;由公钥计算私钥,是相当困难的,现阶段是不可能 加密过...

BlackNight168的博客 3万+

探索SM2+SM3+SM4标准规范pdf.zip:开启密码学学习新篇章

探索SM2+SM3+SM4标准规范pdf.zip:开启密码学学习新篇章 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 SM2+SM3+SM4标准规范pdf.zip 是一款专注于中国密码标准算法的学习资源集合。该压缩文件涵盖了SM2椭圆曲线公钥密码算法、SM3密码杂凑算法和SM4分组密码算法的标准规范文档。这些文档为密码学研究人员、安全工程师以及对此领域感兴趣的学习者提...

gitblog_06731的博客 273

【应用密码学】实验六 公钥密码3——SM2

【应用密码学】实验六 公钥密码3——SM2

xinghuayu_lin的博客 970
上一篇: el-sub-menu template 内容不显示
下一篇: Fabric链码部署-go语言
密言
博客等级 码龄6年 242粉丝 58原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值