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 )

