- Notifications
You must be signed in to change notification settings - Fork0
Slim native AES encryption/decryption on client side with Javascript and on server side with PHP. No external CryptoJS required.
License
brainfoolong/js-aes-php
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A tool to AES encrypt/decrypt data in javascript and/or PHP. You can use it for PHP only, for Javascript only or mix it together.
It usesaes-256-cbc
implementation with random salts and random initialization vector. This library does not support other ciphers or modes.
This library is the successor to my previousCryptoJs-Aes-Php encryption library that required CryptoJS. This library does not require any third party dependency as modern browsers and Node now have proper crypto tools built in. Attention: This library does output different encryption values to my previous library, it cannot be a drop-in replacement.
- Encrypt any value in Javascript (objects/array/etc...) - Everything that can be passed to JSON.stringify
- Encrypt any value in PHP (object/array/etc...) - Everything that can be passed to json_encode
- Decrypt in PHP/Javascript, doesn't matter where you have encrypted the values
- Easy store and transfer the encrypted values, the encrypted output only contains hex characters (0-9 A-F)
- Small footprint: 5kb unzipped Javascript file
- NPM:
npm i js-aes-php
- Composer:
composer require brainfoolong/js-aes-php
- Or just download the latest release zip for everything at once
- For #"https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/encrypt#browser_compatibility" rel="nofollow">recent Browser
src/ts/js-aes-php.ts
$value = ['foobar' =>'l`î','emojiiii' =>'😊'];$password ='😊Blub';$encrypted = JsAesPhp::encrypt($value,$password);$decrypted = JsAesPhp::decrypt($encrypted,$password);
constvalue={'foobar':'l`î','emojiiii':'😊'}constpassword='😊Blub'constencrypted=awaitJsAesPhp.encrypt(value,password)constdecrypted=awaitJsAesPhp.decrypt(encrypted,password)
This library use AES-256-CBC encryption, which is still good and safe but there are (maybe) better alternatives for your use case. If you require really high security, you should invest more time for what is suitable for you.
Also, there's a good article about PHP issues/info related to thislibrary:https://stackoverflow.com/questions/16600708/how-do-you-encrypt-and-decrypt-a-php-string/30159120#30159120
You may wonder if there are alternatives to AES encryption that you can use in PHP/JS. ASCON is a newer, lightweight cipher that have been selected in 2023 by theNIST as the new standard for lightweight cryptography, which may suite your needs. I have created libraries for both PHP and JS which you can find athttps://github.com/brainfoolong/php-ascon andhttps://github.com/brainfoolong/js-ascon
- fixed support for web workers
Initial Public Release
About
Slim native AES encryption/decryption on client side with Javascript and on server side with PHP. No external CryptoJS required.