小程序AES加密、解密
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序AES加密、解密相关的知识,希望对你有一定的参考价值。
参考技术A npm install crypto-jsimport CryptoJS from 'crypto-js'
// 定义加/解密的 key
const initKey = 'Test-AES-CBC-128';
// 设置数据块长度
const keySize = 128;
//设置向量和服务端保持一致
const iv = "0abcdefghij7twhjm";
export const aesEncrypt = (data, key) =>
/**
* CipherOption, 加密的一些选项:
* mode: 加密模式, 可取值(CBC, CFB, CTR, CTRGladman, OFB, ECB), 都在 CryptoJS.mode 对象下
* padding: 填充方式, 可取值(Pkcs7, AnsiX923, Iso10126, Iso97971, ZeroPadding, NoPadding), 都在 CryptoJS.pad 对象下
* iv: 偏移量, mode === ECB 时, 不需要 iv
* 返回的是一个加密对象
*/
const cipher = CryptoJS.AES.encrypt(data, key,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
iv: CryptoJS.enc.Utf8.parse(iv)
);
// 将加密后的数据转换成 Base64
const base64Cipher = cipher.ciphertext.toString(CryptoJS.enc.Base64); //CryptoJS.enc.Base64
console.log('base64Cipher', base64Cipher)
// 处理 android 某些低版的BUG
// const resultCipher = base64Cipher.replace('//+/g,\'-\'').replace(g,'_');
// 返回加密后的经过处理的 Base64
return base64Cipher;
/**
* 解密函数
* @param string encrypted - 加密的数据;
* @param string key - 加密使用的 key
*/
export const aesDecrypt = (encrypted, key) =>
// 先将 Base64 还原一下, 因为加密的时候做了一些字符的替换
// const restoreBase64 = encrypted.replace().replace(/_/g,'/');
// 这里 mode, padding, iv 一定要跟加密的时候完全一样
// 返回的是一个解密后的对象
const decipher = CryptoJS.AES.decrypt(encrypted, key,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
iv: CryptoJS.enc.Utf8.parse(iv)
);
// 将解密对象转换成 UTF8 的字符串
const resultDecipher = CryptoJS.enc.Utf8.stringify(decipher);
// 返回解密结果
return resultDecipher;
php AES cbc模式 pkcs7 128位加密解密(微信小程序)
PHP AES CBC模式PKCS7 128位加密
加密:
$key = ‘1234567812345678‘; $iv = ‘1234567890123456‘; $message = ‘123456‘; $blocksize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $len = strlen($message); //取得字符串长度 $pad = $blocksize - ($len % $blocksize); //取得补码的长度 $message .= str_repeat(chr($pad), $pad); //用ASCII码为补码长度的字符, 补足最后一段 $xcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $message, MCRYPT_MODE_CBC, $iv);
PHP AES CBC模式PKCS7 128位解密
解密:
public function stripPkcs7Padding($string) { $slast = ord(substr($string, -1)); $slastc = chr($slast); $pcheck = substr($string, -$slast); if (preg_match("/$slastc{" . $slast . "}/", $string)) { $string = substr($string, 0, strlen($string) - $slast); return $string; } else { return false; } } stripPkcs7Padding(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $xcrypt, MCRYPT_MODE_CBC, $iv))
http://php.net/manual/zh/function.mcrypt-encrypt.php
转: https://blog.csdn.net/u011650048/article/details/50846124
以上是关于小程序AES加密、解密的主要内容,如果未能解决你的问题,请参考以下文章