brainfoolong/js-aes-php

使用JavaScript在客户端和PHP在服务器端实现AES加密/解密

资助包维护!
brainfoolong

安装: 41

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

语言:TypeScript

1.0.1 2024-08-15 19:38 UTC

This package is auto-updated.

Last update: 2024-09-23 21:49:29 UTC


README

PHP and JS Tests Browser Tests

使用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

首次公开发布