Php 电子签名要求
大家好,我的社区 我在电子签名方面有困难,尤其是在技术要求方面如何适用新加坡法律 根据法律,新加坡接受电子签名,前提是签名:Php 电子签名要求,php,mysql,electronic-signature,Php,Mysql,Electronic Signature,大家好,我的社区 我在电子签名方面有困难,尤其是在技术要求方面如何适用新加坡法律 根据法律,新加坡接受电子签名,前提是签名: 对使用它的人来说是独一无二的 能够识别该人 以一种方式或使用一种由承包商单独控制的方式创建的 使用它的人;及 与与其相关的电子记录相链接,如果记录发生更改,电子签名将无效 我们可以通过HTML5画布制作电子签名,然后将其保存为Database64字符串。这意味着第1点,第2点。三,。你没事 问题出现在第4点。我们确实可以将签名和数据合并到加密字符串中,但是,由于我们拥
- 对使用它的人来说是独一无二的李>
- 能够识别该人李>
- 以一种方式或使用一种由承包商单独控制的方式创建的
使用它的人;及 - 与与其相关的电子记录相链接,如果记录发生更改,电子签名将无效
|id|name|price|signature|final_hash|
------------------------------------
|12|test|40000|data:base|3edcde4642|
因此,我们想到了另一种方法,即将一些我们不知道的参数混合到最终的_散列中,例如签名人的IP地址、他/她的用户代理。。。但是,由于我们不保存这些值,这意味着我们以后将无法检查是否修改了某些值
这就是我们被困的地方,你知道怎么做吗?对我来说,既能检查是否没有修改数据,又不能在以后修改数据,这似乎是不可能的,但我当然可能错了
非常感谢你的帮助 注意:我使用术语“文档”来指代您想要签署的任何内容
一些误解
- 首先,使用HTML5画布或类似方法得到的不是签名,而是指纹。我的意思是,它标识客户,但不能签署文档(至少不能单独签署)。两个警告:
- 指纹是浏览器的指纹,而不是用户的指纹
- 会有碰撞。事实上,为了隐私起见,有人推动让指纹浏览器更难操作,主要是因为公司可以在没有cookie的情况下使用指纹跟踪你
- 您不应通过将指纹连接到数据进行签名。这不是一个签名,这是一个,也不是最好的方法来盐
你的要求
不对称溶液 为了在PHP中实现非对称解决方案,我建议使用 遵循他们的: 代码将使用从服务器收集的熵来生成密钥对 然后你可以用它来做简单的事情 如果需要验证客户端上的签名,可以使用 对于您的用例,服务器只需要一个密钥对。这里的概念是服务器对文档进行签名。如果签名匹配,则表示指纹正确 无论哪种方式,您都应该对私钥保密(永远不要将其发送给客户端),并且您可以与需要验证签名的任何人共享公钥 使用此功能,服务器可以对标识用户/客户端的文档(例如,包括指纹)进行签名,并发布文档和签名。文档完全可读(未加密),但如果有人修改,签名将不再有效 要验证签名,他们需要公钥。但是,公钥对于创建假签名没有用处,要做到这一点,他们需要获得私钥
对称解 对称算法的主要优势在于性能。对称算法的缺点是需要密钥来验证它 因此,如果您需要第三方能够验证签名(或
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$pair = $rsa->createKey();
$privatekey = $pair['privatekey'];
$publickey = $pair['publickey'];
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$rsa->loadKey('...'); // private key
$plaintext = '...';
$signature = $rsa->sign($plaintext);
$rsa->loadKey('...'); // public key
echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified';