atrapalo/urlcrypt

PHP库,用于在URL中安全地编码和解码任意二进制数据的小片段。

维护者

详细信息

github.com/atrapalo/URLcrypt

源码

2.0.0 2018-11-09 11:58 UTC

This package is not auto-updated.

Last update: 2024-09-10 17:43:25 UTC


README

Latest Stable Version Minimum PHP Version Build Status Code Coverage Scrutinizer Code Quality

是否曾经想要在URL中安全地传输(不太长)的任意二进制数据?URLCrypt使这变得简单。

此类基于Aaron Francis的URLCrypt

URLCrypt使用256位AES对称加密来安全地加密数据,并编码和解码可以直接在URL中使用的Base 32字符串

这可以用于在从没有其他身份验证或持久性机制(如cookie)的地方访问Web应用程序时安全地存储用户ID、下载过期日期和其他类似数据。

  • 在电子邮件中加载Web应用程序生成的图像
  • 带有时效日期的链接(类似于S3)
  • 不将数据持久化在服务器上的迷你应用程序

重要:作为一般准则,URL长度不应超过约2000个字符,因为超过这个长度的URL在某些浏览器和一些(代理)服务器上无法工作。这限制了您应该使用URLCrypt存储的数据量。

欢迎提交补丁;请包括测试!

要求

URLCrypt需要PHP >= 7.0以及openssl PHP扩展。

安装

您可以通过Composer使用composer require atrapalo/urlcrypt安装URLCrypt,或者在您的composer.json文件中添加以下内容

{
	"require": {
		"atrapalo/urlcrypt": "^2.0"
	}
}

用法

use Atrapalo\UrlCrypt;

$urlCrypt = new UrlCrypt(); // Or $urlCrypt = UrlCrypt::getInstance()

// encoding without encryption. (don't use for anything sensitive)
$encoded = $urlCrypt->encode('Atrapalo');	// --> "3f5h2ylqmfwg9"
$decoded = $urlCrypt->decode('3f5h2ylqmfwg9');	// --> "Atrapalo"

// encrypting and encoding
$key = 'bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3';
$encrypted = $urlCrypt->encrypt('Atrapalo', $key);
		// --> 'xApfAdvAxg55jvk75y5n2d26xrhv3qtgfmxAmq53mf1t5'
$decrypted = $urlCrypt->decrypt('xApfAdvAxg55jvk75y5n2d26xrhv3qtgfmxAmq53mf1t5', $key)
		// --> 'Atrapalo'

请注意,您的密钥必须是一个小写十六进制字符串。

为什么不是Base 64?

URLCrypt使用一个修改后的Base 32算法,该算法不使用填充字符,并且不使用元音来避免在生成的字符串中出现脏词。

Base64会导致URL丑陋,因为许多字符需要URL转义。

开发

克隆存储库,并在库的根目录中执行composer install以安装开发依赖项。从根目录使用phpunit运行测试。

许可证

此库根据MIT许可证授权 - 有关详细信息,请参阅COPYING文件。