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公钥加密的主要内容,如果未能解决你的问题,请参考以下文章

Laravel基本使用

[转]关于JAVA中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解

如何在 C# 中使用公钥和私钥加密技术

php rsa加密 已有明文和公钥 只需加密

ras可以加密php代码吗

在第 1 行的 Psy Shell 代码中找不到 Laravel 5.6 Tinker Class '...'