盲签名算法的原理与C语言实现
本文原始链接https://blog.csdn.net/youngbug/article/details/125302865
由先驱詹天佐原创
· Alice选择一个随机数作为盲化因子
·
Alice对原始的消息进行计算, 并把计算后(盲化)的消息 发送给Bob
·
Bob计算 并把计算后的签名值 发送给Alice
·
Alice计算 , 就是Bob对原始消息 的数字签名
e = 03 x = new_rsa_genstd( 0100, $e ) n = mid( $x, 0, 32 ) d = mid( $x, 32, 32 )
m = dup( 32, 1f )
// Alice选择一个随机数k 作为盲化因子
k = random( 32 )
// Alice对原始的消息进行计算, m' = m k^e (mod n)并把计算后(盲化)的消息 m' 发送给Bob tmp = big_mod_exp( $k, $e, $n ) mp = big_mod_mul( $m, $tmp, $n )
// Bob计算 s' = (m')^d (mod n)并把计算后的签名值 s' 发送给Alice sp = big_mod_exp( $mp, $d, $n )
// Alice计算 s = s'k^{-1} (mod n), s 就是Bob对原始消息 m 的数字签名 k1 = big_mod_inv( $k, $n ) tmp = big_mod_mul( $k, $k1, $n )
s = big_mod_mul( $sp, $k1, $n )
ori_msg = big_mod_exp( $m, $d, $n )
if $s != $ori_msg ? pause endif
|
· 1