php?
$data?=?"This?is?an?AES?crypt?demo.";?
//加密?
echo?$encrypted,PHP_EOL;
//?解密?
$encryptedData?=?$encrypted;?
echo($decrypted);
输出结果如下:
This?is?an?AES?crypt?demo.
!DOCTYPEhtml
html
head
? titleaes demo/title
/head
body
? script type="text/javascript" src="./CryptoJS/aes.js"/script
? script type="text/javascript" src="./CryptoJS/pad-zeropadding.js"/script
? script type="text/javascript"
? var encrypted = CryptoJS.AES.encrypt(text, key, {
? ? ? iv: iv,
? ? ? mode: CryptoJS.mode.CBC,
? ? ? padding: CryptoJS.pad.ZeroPadding
? }).toString()
? document.write(encrypted);
? /script
/body
/html
后端
? }?
? }
ps:
php需要
则$password才能正确解析出来
需要引入的两个js文件
ase.js
[javascript] view plain copy
/*
code.google.com/p/crypto-js
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS=CryptoJS||function(u,p){var d={},l=d.lib={},s=function(){},t=l.Base={extend:function(a){s.prototype=this;var c=new s;ac.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)(this[c]=a[c]);a.hasOwnProperty("toString")(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},
e)).finalize(b)}}});var n=d.algo={};return d}(Math);
l)}})();
c[d]},q=(d.BlockCipherMode=l.extend({createEncryptor:function(e,a){return this.Encryptor.create(e,a)},createDecryptor:function(e,a){return this.Decryptor.create(e,a)},init:function(e,a){this._cipher=e;this._iv=a}})).extend();q.Encryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize;x.call(this,e,a,c);b.encryptBlock(e,a);this._prevBlock=e.slice(a,a+c)}});q.Decryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize,d=e.slice(a,a+c);b.decryptBlock(e,a);x.call(this,
b.keySize,b.ivSize);l.iv=d.iv;b=a.encrypt.call(this,b,c,d.key,l);b.mixIn(d);return b},decrypt:function(b,c,d,l){l=this.cfg.extend(l);c=this._parse(c,l.format);d=l.kdf.execute(d,b.keySize,b.ivSize,c.salt);l.iv=d.iv;return a.decrypt.call(this,b,c,d.key,l)}})}();
pad-zeropadding.js
/**
* Zero padding strategy.
CryptoJS.pad.ZeroPadding = {
? pad: function (data, blockSize) {
? ? ? // Shortcut
? ? ? // Pad
? ? ? data.clamp();
? ? ? data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
? },?
? unpad: function (data) {
? ? ? var dataWords = data.words;?
? ? ? // Unpad
? ? ? var i = data.sigBytes - 1;
? ? ? ? ? i--;
? ? ? }
? ? ? data.sigBytes = i + 1;
};?
在JS里面也可嵌套PHP语言,所以可以直接嵌套就好了
加密在我们前端的开发中也是经常遇见的.本文只把我们常用的加密方法进行总结.不去纠结加密的具体实现方式(密码学,太庞大了).
常见的加密算法基本分为这几类,
RSA加密:RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.(这才是正经的加密算法)
非对称加密算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥).公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密.因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法.
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法
AES这个标准用来替代原先的DES
DES/AES我们合并在一起介绍其用法和特点
$flag = true ?返回原始流数据
true ?返回原始流数据
$algo : 算法名称,可通过hash_algos()函数获取所有hash加密的算法
而不同.
true ?返回原始流数据.
具体算法依赖于PHP检查之后支持的算法和$salt的格式和长度,当 然具体结果也和操作系统有关.比较结果采用 hash_equals($crypted,crypt($input,$salt));//且salt值相同
Password_verify($str,$crypted);
函数返回哈希加密后的密码字符串, password_hash() 是crypt()的 一个简单封装
$algo : 算法 PASSWORD_DEFAULT ,PASSWORD_BCRYPT
$options = [
"cost"=10,//指明算法递归的层数,
"salt"="xxadasdsad"//加密盐值,即将被遗 弃,采用系统自动随机生成安全性更高
];
使用的算法、cost 和盐值作为哈希的一部分返回
Password_verify($str,$hashed);
可以进行解码;
string $mode [, string $iv ] )
mcrypt_decrypt ( string $cipher , string $key , string $crypted ,
$ciper:加密算法,mcrypt_list_algorithms()可以获取该函数所有支持的算法
$mode : 加密模式 ,mcrypt_list_modes()获取所有支持的加密模式,ecb,cbc
$key: 加密的秘钥,mcrypt_get_key_size ( string $cipher , string $mode )
获取指定的算法和模式所需的密钥长度.$key要满足这个长度,如果长 度无效会报出警告.
$iv : 加密的初始向量,可通过mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] ),
Iv的参数size:
通过mcrypt_get_iv_size ( string $cipher , string $mode )获取
Iv 的参数source:
Note: 需要注意的是,如果没有更多可用的用来产生随机数据的信息, 那么 MCRYPT_DEV_RANDOM 可能进入阻塞状态.
$data : 要加密的字符串数据
以上就是土嘎嘎小编为大家整理的php解密js数据加密相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!