在PHP中使用openssl_sign()时的不同输出

在PHP中使用openssl_sign()时的不同输出,php,openssl,ecdsa,Php,Openssl,Ecdsa,最近,我尝试将PHP openssl扩展与使用本教程颁发的ecdsa自签名证书一起使用。我使用了PHP手册中描述的函数openssl_sign()。我注意到每次刷新网页时,我都会得到不同的签名输出。有人能解释发生了什么吗?使用ecdsa证书是否有任何方式每次都能获得相同的签名输出?生成ecdsa签名的一个组件是生成一个随机数(k) 由于每次对签名的调用都会生成一个不同的随机数,因此无法使用ECDSA生成确定性证书(除了自己进行所有ECC计算并选择k;或者在某个地方找到一个允许指定k的库).因此,

最近,我尝试将PHP openssl扩展与使用本教程颁发的ecdsa自签名证书一起使用。我使用了PHP手册中描述的函数openssl_sign()。我注意到每次刷新网页时,我都会得到不同的签名输出。有人能解释发生了什么吗?使用ecdsa证书是否有任何方式每次都能获得相同的签名输出?

生成ecdsa签名的一个组件是生成一个随机数(k)


由于每次对签名的调用都会生成一个不同的随机数,因此无法使用ECDSA生成确定性证书(除了自己进行所有ECC计算并选择k;或者在某个地方找到一个允许指定k的库).

因此,由于输出不同,openssl是否无法生成稍后可以验证的签名?验证签名与创建签名不同。验证公式可以在同一个(密钥、数据、签名)三元组上运行多次,并始终生成相同的答案。但是,如果您要求OpenSSL使用相同的密钥对相同的数据进行两次ECDSA签名,它将给出两个不同的答案。关于库,您有什么想法或建议吗?