atrapalo / urlcrypt
PHP库,用于在URL中安全地编码和解码任意二进制数据的小片段。
Requires
- php: ^7.0
- ext-mbstring: *
- ext-openssl: *
Requires (Dev)
- phpunit/phpunit: ^6.5
This package is not auto-updated.
Last update: 2024-09-10 17:43:25 UTC
README
是否曾经想要在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
文件。