在秘钥固定的情况下,php做aes加密秘钥和解密秘钥,windows和linux解密的结果不同

C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现
chengmodelong
发布时间: 10:20:09
c#里面的AES加密解密
在visual studio中写的c#代码
using System.Collections.G
using System.L
using System.T
using System.Security.C
namespace test
class Class1
static void Main(string[] args)
Console.WriteLine(&I am comming&);
String source = &Test String&;
String encryptData = Class1.Encrypt(source, &5678&, &5678&);
Console.WriteLine(&=1==&);
Console.WriteLine(encryptData);
Console.WriteLine(&=2==&);
String decryptData = Class1.Decrypt(&2fbwW9+8vPId2/foafZq6Q==&, &5678&, &5678&);
Console.WriteLine(decryptData);
Console.WriteLine(&=3==&);
Console.WriteLine(&I will go out&);
public static string Encrypt(string toEncrypt, string key, string iv)
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] ivArray = UTF8Encoding.UTF8.GetBytes(iv);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyA
rDel.IV = ivA
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.Z
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
public static string Decrypt(string toDecrypt, string key, string iv)
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] ivArray = UTF8Encoding.UTF8.GetBytes(iv);
byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyA
rDel.IV = ivA
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.Z
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
其中加密后以及解密后的字符串都能成功打印,但Console.WriteLine(&=3==&);之后的输出就没有了,最后输出个线程返回值0,然后就没有然后了。c#不懂,就不深究了,就已执行的部分,是符合要求了。
Java的AES加密解密:
java代码,测试也是可以的
import javax.crypto.C
import javax.crypto.spec.IvParameterS
import javax.crypto.spec.SecretKeyS
import org.junit.T
public void testCrossLanguageEncrypt() throws Exception{
System.out.println(encrypt());
System.out.println(desEncrypt());
public static String encrypt() throws Exception {
String data = &Test String&;
String key = &5678&;
String iv = &5678&;
Cipher cipher = Cipher.getInstance(&AES/CBC/NoPadding&);
int blockSize = cipher.getBlockSize();
byte[] dataBytes = data.getBytes();
int plaintextLength = dataBytes.
if (plaintextLength % blockSize != 0) {
plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
byte[] plaintext = new byte[plaintextLength];
System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), &AES&);
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
byte[] encrypted = cipher.doFinal(plaintext);
return new sun.misc.BASE64Encoder().encode(encrypted);
} catch (Exception e) {
e.printStackTrace();
public static String desEncrypt() throws Exception {
String data = &2fbwW9+8vPId2/foafZq6Q==&;
String key = &5678&;
String iv = &5678&;
byte[] encrypted1 = new sun.misc.BASE64Decoder().decodeBuffer(data);
Cipher cipher = Cipher.getInstance(&AES/CBC/NoPadding&);
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), &AES&);
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original);
return originalS
catch (Exception e) {
e.printStackTrace();
php的AES加密解密
php代码,php很多东西都是提供好的,直接用函数,但是php目前所知填充模式只有ZeroPadding,于是其他语言就只能跟着它来了:
$privateKey = &5678&;
= &Test String&;
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_CBC, $iv);
echo($encrypted);
echo '&br/&';
echo(base64_encode($encrypted));
echo '&br/&';
$encryptedData = base64_decode(&2fbwW9+8vPId2/foafZq6Q==&);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv);
echo($decrypted);
Javascript下aes加解密,试过也可以,需要在https://code.google.com/p/crypto-js/下载工具包
&script type=&text/javascript& src=&aes.js&&&/script&
&script type=&text/javascript& src=&pad-zeropadding.js&&&/script&
导入文件,aes.js需要导入crypto-js压缩包中rollups文件夹下的那个aes.js文件,如果引入的是components文件夹下的aes.js是会报错的&script type=&text/javascript&&
var data = &Test String&;
= CryptoJS.enc.Latin1.parse('5678');
= CryptoJS.enc.Latin1.parse('5678');
var encrypted = CryptoJS.AES.encrypt(data,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
document.write(encrypted.ciphertext);
document.write('&br/&');
document.write(encrypted.key);
document.write('&br/&');
document.write(encrypted.iv);
document.write('&br/&');
document.write(encrypted.salt);
document.write('&br/&');
document.write(encrypted);
document.write('&br/&');
var decrypted = CryptoJS.AES.decrypt(encrypted,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding});
console.log(decrypted.toString(CryptoJS.enc.Utf8));
原文地址:http://outofmemory.cn/code-snippet/35524/AES-with-javascript-java-csharp-python-or-php
来源:http://blog.csdn.net/chengmodelong/article/details/AES加密算法
密码学中的高级加密标准(Advanced&Encryption&Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
解释来源:
中我们说到了sign签名,sign其实是防篡改的一种方法,它将约定好的排序、位置、数组进行密钥加密生成sign对比。
是的,sign签名我们是能看到数据的,只是可以防止数据的篡改。而AES可以加密解密数据
AES通过约定好的密钥进行加密,通过约定好的密钥解密。
ECB加密模式(不推荐):
容易被攻击
function encrypt($input, $key) {
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$input = pkcs5_pad($input, $size);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, hextobin($key), $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
function pkcs5_pad($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
function decrypt($sStr, $sKey) {
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, hextobin($sKey), base64_decode($sStr), MCRYPT_MODE_ECB);
$dec_s = strlen($decrypted);
$padding = ord($decrypted[$dec_s - 1]);
$decrypted = substr($decrypted, 0, -$padding);
return $decrypted;
function hextobin($hexstr) {
$n = strlen($hexstr);
$sbin = "";
while ($i & $n) {
$a = substr($hexstr, $i, 2);
$c = pack("H*", $a);
if ($i == 0) {
$sbin = $c;
$sbin.=$c;
return $sbin;
define('SECRETKEY', '3543052abc43edfedus');
//Warning: mcrypt_decrypt(): Key of size 9 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported
//Warning: pack(): Type H: illegal hex digit s
//Warning: pack(): Type H: illegal hex digit u
echo $endata= encrypt('Hello, world! ', SECRETKEY);
echo $dedata= decrypt($endata, SECRETKEY);
有没有注意到 代码中的注释:
Warning: mcrypt_decrypt(): Key of size 9 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported
Warning: pack(): Type H: illegal hex digit s
Warning: pack(): Type H: illegal hex digit u
因为加密的密钥有长度限制所以必须为16、24、32的长度才可以
pack() 16进制转换为二进制的时候,发现了key密钥中包含了&s,u& 字符,想想看,16进制最多到F,F以后的字符都是扯蛋
1111 = 8 + 4 + 2 + 1 = 15 =F
1110 = 8 + 4 + 2 + 0 = 14= E
1101 = 8 + 4 + 0 + 1 = 13= D
1100 = 8 + 4 + 0 + 0 = 12 =C
1011 = 8 + 0 + 2 + 1 = 11= B
1010 = 8 + 0 + 2 + 0 = 10 =A
所以生成使用密钥的时候,我们应该预先生成好16进制的密钥。
4ihVrJk0acwmAF6td5emIkV9T6VnRHYZcW2BUw4CSUQ=
Hello, world!
&CBC加密模式 (推荐&&):
define('SECRETKEY', '12f862d21d3ceafba1b88e5f22960d55');
* 加密方法
* @param string $str
* @return string
function encrypt($str) {
//AES, 128 ECB模式加密数据
$str = addPKCS7Padding($str);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
$encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, SECRETKEY, $str, MCRYPT_MODE_CBC, '0000');
return base64_encode($encrypt_str);
* 解密方法
* @param string $str
* @return string
function decrypt($str) {
//AES, 128 CBC模式加密数据
$str = base64_decode($str);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
$encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, SECRETKEY, $str, MCRYPT_MODE_CBC, '0000');
$encrypt_str = stripPKSC7Padding($encrypt_str);
return $encrypt_str;
* 填充算法
* @param string $source
* @return string
function addPKCS7Padding($source) {
$source = trim($source);
$block = mcrypt_get_block_size('rijndael-128', 'cbc');
$pad = $block - (strlen($source) % $block);
if ($pad &= $block) {
$char = chr($pad);
$source .= str_repeat($char, $pad);
return $source;
* 移去填充算法
* @param string $source
* @return string
function stripPKSC7Padding($source) {
$char = substr($source, -1);
$num = ord($char);
$source = substr($source, 0, -$num);
return $source;
$string =encrypt('Hello, world!');
print_r($string);
echo '&hr&';
$string=decrypt($string);
print_r($string);
打印效果:
tZOYOkwxFdkqP6chub5Q8SsH9igXPIKlCNmWxVBjFkM=
Hello, world!
使用PKCS5Padding/PKCS7Padding填充可以兼容多平台语言之间AES加密解密(PHP、Java、C&&)
注意这里每次产生的密文是相同的,因为设置了初试向量iv为16位个数的&0&。要产生不同的密文就要使用变化的初试向量iv
define('SECRETKEY', '12f862d21d3ceafba1b88e5f22960d55');
* 加密方法
* @param string $str
* @return string
function encrypt($str) {
//AES, 128 ECB模式加密数据
$str = addPKCS7Padding($str);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
define('A', $iv);
$encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, SECRETKEY, $str, MCRYPT_MODE_CBC, $iv);
return base64_encode($encrypt_str);
* 解密方法
* @param string $str
* @return string
function decrypt($str) {
//AES, 128 ECB模式加密数据
$str = base64_decode($str);
$encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, SECRETKEY, $str, MCRYPT_MODE_CBC,A);
$encrypt_str = stripPKSC7Padding($encrypt_str);
return $encrypt_str;
* 填充算法
* @param string $source
* @return string
function addPKCS7Padding($source) {
$source = trim($source);
$block = mcrypt_get_block_size('rijndael-128', 'cbc');
$pad = $block - (strlen($source) % $block);
if ($pad &= $block) {
$char = chr($pad);
$source .= str_repeat($char, $pad);
return $source;
* 移去填充算法
* @param string $source
* @return string
function stripPKSC7Padding($source) {
$char = substr($source, -1);
$num = ord($char);
$source = substr($source, 0, -$num);
return $source;
$string =encrypt('Hello, world!');
print_r($string);
echo '&hr&';
$string=decrypt($string);
print_r($string);
打印效果:
faxcY9iEj4Q+67l2Fd+k+URMp8Y4VVih/JeUSQbYuwKw3u8holL0mdG3Jg51mbPxDFlj76M3dU8jYt2nhtUhxA==
tVWCmXvNuOeuWYI6VoSplUtdq+yV66vDr22Bdja2uNVpaftNNU6jwQWth2DD4JxgaL1d3Atv8jZGsoSV6XLJWA==
PTjgu8kJ1B7LTm40IXEl6fPVTbQYuETPvjg2miQVVs1i/r+07pjGAfsL5JpSQKOROMX8B3mSiSu/YjubHffkYA==
Cb5WjMwb3wOpqCmUWEErPc9sfUEYYiMzvoosYoHdCFq1vh78batnXLbpjOavnCT0Y6y+4jq+fviTmY3plOAK8g==
结果都是:
Hello, world!
&注意: 这里面的密钥define('SECRETKEY', '12f862d21d3ceafba1b88e5f22960d55');
长度为32位,但在严格的AES中,加密的密钥必须与字符串算法长度一至,(MCRYPT_RIJNDAEL_128、MCRYPT_RIJNDAEL_192、MCRYPT_RIJNDAEL_256)
二进制数据
1 byte 字节
1 字母 = 1
byte = 8 bit
也就是128位/8=16字节=16字符
192位/8=24字节=24字符
256位/8=32字节=32字符
所以,上面的代码为了兼容其他Java、C等,密钥应该改为16位:
define('SECRETKEY', '12f862d21d3ceafb')
也可以直接生成一个32位的16进制密钥用于其他功能的加密(sign签名),通过hex2bin可以将32位的16进制字符串转换为16位二进制字符串
生成16进制随机码
for($i=0;$i&32;$i++){
$num .=dechex(rand(0,15));
echo $num;
$screct_key = hex2bin($num);
echo strlen($screct_key);
485d608d9f090efe34b9a
?W? t???????K?
阅读(...) 评论()AES加密 PHP 与 Javascript 加密内容为中文时不一致
[问题点数:40分,结帖人usdnfo]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:199957
2017年 总版技术专家分年内排行榜第四2014年 总版技术专家分年内排行榜第四2013年 总版技术专家分年内排行榜第四2012年 总版技术专家分年内排行榜第六
2018年3月 总版技术专家分月排行榜第一2013年5月 总版技术专家分月排行榜第一
2018年4月 总版技术专家分月排行榜第二2016年7月 总版技术专家分月排行榜第二2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2016年10月优秀大版主
2016年8月论坛优秀版主优秀大版主2015年7月优秀大版主2015年8月优秀大版主2015年8月优秀大版主2015年9月优秀大版主2015年5月优秀大版主2015年4月优秀版主2014年11月论坛优秀版主
本版专家分:0
匿名用户不能发表回复!
其他相关推荐为了账号安全,请及时绑定邮箱和手机
点击这里,将文章分享到自己的动态
php中aes加密和rsa加密的区别
RSA非对称加密,公钥加密,私钥解密,反之亦然。由于需要大数的乘幂求模等算法,运行速度慢,不易于硬件实现。通常私钥长度有512bit,1024bit,2048bit,4096bit,长度越长,越安全,但是生成密钥越慢,加解密也越耗时。既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。AES对称加密,密钥最长只有256个bit,执行速度快,易于硬件实现。由于是对称加密,密钥需要在传输前通讯双方获知。基于以上特点,通常使用RSA来首先传输AES的密钥给对方,然后再使用AES来进行加密通讯。&
若觉得本文不错,就分享一下吧!
评论加载中...
相关文章推荐
正在加载中
作者相关文章提供主流cms教程
提供数据库教程和设计
提供各种常见网页js代码
提供常用的JS特效代码及在线演示
提供jQuery插件教程及插件下载
提供服务器常见问题及教程
提供常用开发手册和开发工具
您现在的位置:& >
在PHP中使用AES加密算法加密数据及解密数据
这个算法可以将数据加密后,储存起来,到需要用的时候,用之前加密的秘钥将之还原。
除了这个之外,还有AES这个算法能够将数据很好的加密起来,在传输过程中不容易被破解。
在PHP中,我们必须先安装好mcrypt这个模块,并且添加相应版本的扩展到php中。
AES加密模式和填充方式有以下之中,但不是全部
算法/模式/填充&&&&&&&&&&&&&&& 16字节加密后数据长度&&&&&&& 不满16字节加密后长度
AES/CBC/NoPadding&&&&&&&&&&&&&&&& 16&&&&&&&&&&&&&&&&&&&&&&&&& 不支持
AES/CBC/PKCS5Padding&&&&&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/CBC/ISO10126Padding&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/CFB/NoPadding&&&&&&&&&&&&&&&&&& 16&&&&&&&&&&&&&&&&&&&&&&&&& 原始数据长度
AES/CFB/PKCS5Padding&&&&&&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/CFB/ISO10126Padding&&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/ECB/NoPadding&&&&&&&&&&&&&&&&&& 16&&&&&&&&&&&&&&&&&&&&&&&&& 不支持
AES/ECB/PKCS5Padding&&&&&&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/ECB/ISO10126Padding&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/OFB/NoPadding&&&&&&&&&&&&&&&&& 16&&&&&&&&&&&&&&&&&&&&&&&&& 原始数据长度
AES/OFB/PKCS5Padding&&&&&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/OFB/ISO10126Padding&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/PCBC/NoPadding&&&&&&&&&&&&&&& 16&&&&&&&&&&&&&&&&&&&&&&&&& 不支持
AES/PCBC/PKCS5Padding&&&&&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
AES/PCBC/ISO10126Padding&&&&& 32&&&&&&&&&&&&&&&&&&&&&&&&& 16
下面就是在PHP中使用AES对数据加密
AES-CBC 加密方案
&&& $privateKey = &5678&;
&&& $iv& = &5678&;
&&& $data& = &Test String&;
& & //加密
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_CBC, $iv);
&&& $encrypted = base64_encode($encrypted);
&&& //解密
& $decrypted = base64_decode($encrypted);
&&& $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $decrypted, MCRYPT_MODE_CBC, $iv);
&&& echo $
AES-ECB加密方案
&&& //加密&&
&&& $key = '3456';&&
&&& $content = 'hello';&&
&&& $padkey = pad2Length($key,16);&&
&&& $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');&&
&&& $iv_size = mcrypt_enc_get_iv_size($cipher);&&
&&& $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); #IV自动生成?&&
&&& echo '自动生成iv的长度:'.strlen($iv).'位:'.bin2hex($iv).'&br&';&&
&&& if (mcrypt_generic_init($cipher, pad2Length($key,16), $iv) != -1)&&
&&&&&&& // PHP pads with NULL bytes if $content is not a multiple of the block size..&&
&&&&&&& $cipherText = mcrypt_generic($cipher,pad2Length($content,16) );&&
&&&&&&& mcrypt_generic_deinit($cipher);&&
&&&&&&& mcrypt_module_close($cipher);&&
&&&&&&& // Display the result in hex.&&
&&&&&&& printf(&128-bit encrypted result:\n%s\n\n&,bin2hex($cipherText));&&
&&&&&&& print(&&br /&&);&&
&&& //解密&&&
& & $mw = bin2hex($cipherText);&&
&&& $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');&&
&&& if (mcrypt_generic_init($td, $padkey, $iv) != -1)&&
&&&&&&& $p_t = mdecrypt_generic($td, hexToStr($mw));&&
&&&&&&& mcrypt_generic_deinit($td);&&
&&&&&&& mcrypt_module_close($td);&&
&&&&&&& $p_t = trimEnd($p_t);&&
&&&&&&& echo '解密:';&&
&&&&&&& print($p_t);&&
&&&&&&& print(&&br /&&);&&
&&&&&&& print(bin2hex($p_t));&&
&&&&&&& echo '&br&&br&';&&
& & //将$text补足$padlen倍数的长度&&&
&function pad2Length($text, $padlen){&&
&&&&&&& $len = strlen($text)%$&&
&&&&&&& $res = $&&
&&&&&&& $span = $padlen-$&&
&&&&&&& for($i=0; $i&$ $i++){&&
&&&&&&&&&&& $res .= chr($span);&&
&&&&&&& }&&
&&&&&&& return $&&
&&& //将解密后多余的长度去掉(因为在加密的时候 补充长度满足block_size的长度)&&&
& & function trimEnd($text){&&
&&&&&&& $len = strlen($text);&&
&&&&&&& $c = $text[$len-1];&&
&&&&&&& if(ord($c) &$len){&&
&&&&&&&&&&& for($i=$len-ord($c); $i&$ $i++){&&
&&&&&&&&&&&&&&& if($text[$i] != $c){&&
&&&&&&&&&&&&&&&&&&& return $&&
&&&&&&&&&&&&&&& }&&
&&&&&&&&&&& }&&
&&&&&&&&&&& return substr($text, 0, $len-ord($c));&&
&&&&&&& }&&
&&&&&&& return $&&
&&& //16进制的转为2进制字符串&&
&&& function hexToStr($hex)&&&
&&&&&&& $bin=&&;&&&
&&&&&&& for($i=0; $i&strlen($hex)-1; $i+=2)&&&
&&&&&&& {&&
&&&&&&&&&&& $bin.=chr(hexdec($hex[$i].$hex[$i+1]));&&&
&&&&&&& }&&&&&&
&&&&&&& return $&&&
AES-ECB加密方案
&?php&&&&&&
&&& $key = '3456';&&
&&& $key = pad2Length($key,16);&&
&&& $iv = 'asdff';&&
&&& $content = 'hello';&&
&&& $content = pad2Length($content,16);&&
&&& $AESed =& bin2hex( mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$content,MCRYPT_MODE_ECB,$iv) ); #加密&&
&&& echo &128-bit encrypted result:&.$AESed.'&br&';&&
&&& $jiemi = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key,hexToStr($AESed),MCRYPT_MODE_ECB,$iv); #解密&&
&&& echo '解密:';&&
&&& echo trimEnd($jiemi);&&&&
以上只是我列出的简单的3种加密方法,事实上还有很多中方法,需要我们不断的学习。密码学的道路还任重而道远。}

我要回帖

更多关于 phpaes加密 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信