Page 27 - 《软件学报》2025年第10期
P. 27

4424                                                      软件学报  2025  年第  36  卷第  10  期


                 的位置信息, 使用     255  与上述信息做差分别验证签名块是否有效. 若计算的值同公钥值相同则签名值有效, 反之则
                 签名无效. 签名验证具体过程如算法           3  所示. 以“Hello World!”为例的签名验证信息如表      4  所示.

                 算法  3. 签名验证  Verify  算法.

                 输入: 消息   M; 签名值  σ = σ 0 ,σ 1 ,...,σ 47 ; 公钥集合   pk = pk 0 , pk 1 ,..., pk 47 ;
                 输出: 签名值有效     true; 签名值无效  false.

                 1.     m = H(M) //计算消息  M  的摘要值
                 2.     m_bin ⇐ m //将摘要值转为二进制形式存储到     m_bin 中
                 3.     a = base_8(m_bin) //将  m_bin 中每  8  个比特转为一个十进制数据存储到  a 中
                 4.   for  0 ⩽ i ⩽ 31
                 5.      step[i] = a[i]
                       ′
                 6.       pk = H 255−step[i] (σ i ) //将签名块分别做  (255−step[i]) 次运算得到对应验证公钥块
                       i
                 7.   end for
                 8.    hex_symbols = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
                 9.    m_hex ⇐ m
                 10. for  0 ⩽ i ⩽ 15
                 11.    sum[i] = 0
                 12.   for  1 ⩽ j ⩽ 64
                 13.   if  m_hex[j] = hex_symbols[i] //计算每个字符的位置信息
                         sum[i] = sum[i]+ j
                 14.
                 15.   end if
                 16.  end for
                 17.  step[i+32] = sum[i](mod 255) //将每个字符的位置信息值模  255
                 18.  pk ′  = H 255−step[i+32]  (σ i+32 ) //将签名块分别做  (255−step[i+32]) 次运算得到验证公钥块
                     i+32
                 19. end for
                 20.  pk = pk , pk ,..., pk ′ 47
                     ′
                             ′
                          ′
                             1
                          0
                 21. if  pk = pk
                       ′
                 22.  return true //若签名值有效则返回   true
                 23. else
                 24.  return false //若签名值有效则返回  false

                                             表 4 过程参数与签名验证         (部分省略)

                          哈希链          摘要值中的信息             对应值            index        验证公钥块
                            0               0A               10            10          H 255−10 (σ 0 )
                            1               C0              192           192          H 255−192 (σ 1 )
                           …                …                …             …              …
                           31               82              130           130         H 255−130 (σ 31 )
                           32                0               15            15          H 255−15 (σ 32 )
                           33                1              362           107         H 255−107 (σ 33 )
                           …                …                …             …              …
                           40                8               92            92          H 255−92 (σ 40 )
                           41                9              123           123         H  255−123 (σ 41 )
   22   23   24   25   26   27   28   29   30   31   32