Laravel 5.6和TCPDF公钥加密
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.6和TCPDF公钥加密相关的知识,希望对你有一定的参考价值。
我是PKI的新手,希望有人可以帮我解决我的情况。我目前正在使用Laravel 5.6开发我的网站,我正在使用elibyy/tcpdf-laravel
包来创建PDF。目前,当我的用户创建PDF时,它通过AES 256加密并受密码保护,但我想添加公钥加密。
这是流程,合同是通过html创建的,用户签订合同,签名后出现一个复选框和一个完成按钮。他们选中复选框并单击完成。然后将网页转换为PDF并存储在AWS S3上。
以下是关于公钥加密的TCPDF文档:
Possible encryption modes are:
0 = RSA 40 bit
1 = RSA 128 bit
2 = AES 128 bit
3 = AES 256 bit
NOTES:
- To create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt
- To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12
- To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes
*/
$pdf->SetProtection(array('print', 'copy'), '', null, 0, null);
// Example with public-key
// To open the document you need to install the private key (tcpdf.p12) on the Acrobat Reader. The password is: 1234
//$pdf->SetProtection($permissions=array('print', 'copy'), $user_pass='', $owner_pass=null, $mode=1, $pubkeys=array(array('c' => 'file://../config/cert/tcpdf.crt', 'p' => array('print'))));
// *********************************************************
问题一:我在哪里存储公钥和私钥?在我的Laravel App中?在AWS S3上?
问题二:我是否需要为每份合同生成公钥?
问题三:它说要打开一个文档,你必须在Acrobat Reader上安装私钥,我认为这是用户打开PDF所必须做的事情?
我希望有一个关于这个的教程,但我似乎找不到一个。任何帮助是极大的赞赏。谢谢!
加密,无论是对称的还是非对称的,都是一个非常引人入胜的话题。但是,您最好了解它,否则很容易创建非常容易破解的漏洞。
对于您想要做的事情,坚持使用对称加密,甚至更好地使用包含加密的PKZIP库。既然你提到了php,那么你可以通过Google找到几个用于PHP的zip和加密库。
PKI(非对称加密)很难做到正确。例如,您想使用PKI。这意味着您将使用私钥加密文档,客户将使用您的公钥解密文档。这意味着任何人都可以解密,因为公钥只是公开的。您永远不会透露私钥。
管理公钥和私钥本身就是整个服务 - 请查看AWS Key Management Service(KMS)和AWS Certificate Manager(ACM)。
每个私钥只有一个公钥。这些键在数学上相互关联(通过素数)。
以上是关于Laravel 5.6和TCPDF公钥加密的主要内容,如果未能解决你的问题,请参考以下文章