4cm/crypto

PHP的两种加密方法。

1.0.1 2019-07-29 18:19 UTC

This package is auto-updated.

Last update: 2024-09-29 05:28:41 UTC


README

PHP的两种加密方法/类。

需求

此函数需要您的服务器安装并启用PHP (7.2.0+),并且您已安装并启用了服务器上的sodium

版本

2019年7月29日 - 版本 1.0.0发布

安装

使用Composer

$ composer require 4cm/crypto
{
    "require": {
        "4cm/crypto": "*"
    }
}

不使用Composer

为什么您不使用composer?您可以直接下载php文件,将其上传到您的服务器,并像通常包含php文件一样包含该文件。

<?php
require 'path/to/crypto.php';

密钥生成

对于您的网站/服务的每个用户,您应该在您的服务器上某个位置生成一个密钥(最好在子根目录中)。

如果您使用KMS,只需对本地路径进行必要的更改,以使用KMS API的路径。这可能是指您自己的本地KMS硬件或AWS、Google Cloud和其他KMS提供商提供的服务。

您应该在生成新密钥的调用中包含try/catch,以处理Exception消息。

以下是一个示例,展示了如何处理您喜欢的任何方式下的Exception错误消息。

try {
    //
    (new crypto($keyPath))->generateKey();
    //
} catch (Exception $e) {
    //
    die($e->getMessage());
    //
}

加密/解密函数变量

crypto类有三个变量需要传递给加密和解密

  1. $keyPath = 用户加密密钥的路径,由(new crypto($keyPath))->generateKey();生成并存储在您的服务器上的某个位置,最好是子根。
  2. $Content = 您想要加密或解密的内容。
  3. ed = 操作方向,要么是e用于加密,要么是d用于解密。

加密示例

以下示例将向您展示如何加密一条消息。

您应该在生成新密钥的调用中包含try/catch,以处理Exception消息。

以下是一个示例,展示了如何处理您喜欢的任何方式下的Exception错误消息。

//
$keyPath = '/path/to/subrootfolder/userid.key';
$Content = 'This is a message that we want to encrypt';
//
try {
    //
    $Content = (new crypto($keyPath, $Content, 'e'))->crypto();
    //
} catch (Exception $e) {
    //
    die('Encryption Error: ' . $e->getMessage());
    //
}

解密示例

以下示例将向您展示如何加密一条消息。

请注意,此示例中与之前不同的地方是方向变量传递的是'd'而不是'e'

您应该在生成新密钥的调用中包含try/catch,以处理Exception消息。

以下是一个示例,展示了如何处理您喜欢的任何方式下的Exception错误消息。

//
$keyPath = '/path/to/subrootfolder/kms/userid.key';
$EncryptedContent = 'XyjE80p/QF72xwHx6HSNJt8WKxodx0nKhDaNeCe0koxvQ=='; // just an example of encrypted content
//
try {
    //
    $Content = (new crypto($keyPath, $EncryptedContent, 'd'))->crypto();
    //
} catch (Exception $e) {
    //
    die('Decryption Error: ' . $e->getMessage());
    //
}

安全联系信息

要报告安全漏洞,请参考我们composer.json文件中的支持电子邮件地址。

我们将协调任何必要的安全解决方案,并在请求的情况下提供披露。

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件