brainfoolong / js-aes-php
使用JavaScript在客户端和PHP在服务器端实现AES加密/解密
1.0.1
2024-08-15 19:38 UTC
Requires
- php: >=8.0.0
- ext-json: *
- ext-openssl: *
README
使用JavaScript在客户端和PHP在服务器端实现AES加密/解密
一个用于在JavaScript和/或PHP中加密/解密数据的工具。您可以使用它仅用于PHP,仅用于JavaScript或混合使用。
它使用aes-256-cbc
实现,具有随机盐和随机初始化向量。此库不支持其他密码或模式。
此库是我的之前需要CryptoJS的加密库CryptoJs-Aes-Php的后继者。此库不要求任何第三方依赖项,因为现代浏览器和Node现在都内置了适当的加密工具。注意:此库输出的加密值与我的前一个库不同,不能直接替换。
功能
- 在JavaScript中加密任何值(对象/数组等...)- 任何可以通过JSON.stringify传递的内容
- 在PHP中加密任何值(对象/数组等...)- 任何可以通过json_encode传递的内容
- 在PHP/JavaScript中解密,无论您在哪里加密了这些值
- 轻松存储和传输加密值,加密输出仅包含十六进制字符(0-9 A-F)
- 小巧的体积:5kb解压缩后的JavaScript文件
安装
- NPM:
npm i js-aes-php
- Composer:
composer require brainfoolong/js-aes-php
- 或者直接下载最新发布版本的压缩包
要求
- 对于JavaScript:任何较新浏览器或Node环境(15+)
- 对于TypeScript:使用
src/ts/js-aes-php.ts
- 对于PHP:8.0或更高版本,并启用了OpenSSL扩展
PHP - 使用方法
$value = ['foobar' => 'l`î', 'emojiiii' => '😊']; $password = '😊Blub'; $encrypted = JsAesPhp::encrypt($value, $password); $decrypted = JsAesPhp::decrypt($encrypted, $password);
JavaScript/TypeScript - 使用方法
const value = { 'foobar': 'l`î', 'emojiiii': '😊' } const password = '😊Blub' const encrypted = await JsAesPhp.encrypt(value, password) const decrypted = await JsAesPhp.decrypt(encrypted, password)
安全注意事项
此库使用AES-256-CBC加密,这仍然很好和安全,但可能还有(可能)更适合您用例的更好替代方案。如果您确实需要非常高的安全性,您应该花更多时间来寻找适合您的方法。
此外,还有一篇关于此库相关的PHP问题/信息的优秀文章:[链接](https://stackoverflow.com/questions/16600708/how-do-you-encrypt-and-decrypt-a-php-string/30159120#30159120)
替代方案 - ASCON
您可能会想知道是否有替代AES加密的方法,您可以在PHP/JS中使用。ASCON是一种较新的、轻量级的密码,2023年由NIST选为轻量级加密的新标准,可能适合您的需求。我已为PHP和JS创建了库,您可以在以下位置找到它们:[链接](https://github.com/brainfoolong/php-ascon)和[链接](https://github.com/brainfoolong/js-ascon)
变更日志
1.0.1 - 2024-08-14
首次公开发布