在研究discuz 的時候,發現discuz有一套相當完美的加密演算法(相對而言)。這個演算法可以將資料加密後,儲存起來,到需要用的時候,用之前加密的秘鑰將之還原。
除了這個之外,還有aes這個演算法能夠將資料很好的加密起來,在傳輸過程中不容易被破解。
在php中,我們必須先安裝好mcrypt這個模組,並且新增相應版本的擴充套件到php中,詳情可以看 不重新編譯php安裝mcrypt擴充套件
aes加密模式和填充方式有以下之中,但不是全部
演算法/模式/填充 16位元組加密後資料長度 不滿16位元組加密後長度
aes/cbc/nopadding 16 不支援
awww.cppcns.comes/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 加密方案
<?php $privatekey = "1234567812345678";
$iv =www.cppcns.com "1234567812345678";
$data = "test string";
//加密
$encrypted = mcrypt_encrypt(mcrypt_rijndael_128, $privatekey, $data, mcrypt_mode_cbc, $iv);
echo(base64_encode($encrypted));
echo '
';//解密
$encrypteddata = base64_decode("2fbww9+8vpid2/foafzq6q==");
$decrypted = mcrypt_decrypt(mcrypt_rijndael_128, $privatekey, $encrypteddata, mcrypt_mode_cbc, $iv);
echo($decrypted);
?>
aes-ecb加密方案
<?php //加密
$key = '1234567890123456';
$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).'
';
if (mcrypt_generic_init($cipher, pad2length($key,16), $iv) != -1)
//解密
$mw = bin2hex($ciphertext);
$td = mcrypt_module_open(mcrypt_rijndael_128, '', mcrypt_mode_ecb, '');
if (mcrypt_generic_init($td, $padkey, $iv) != -1)
//將$text補足$padlen倍數的長度
function pad2length($text, $padlen){
$len = strlen($text)%$padlen;
$res = $text;
$span = $padlen-$len;
for($i=0; $i
aes-ecb加密方案
<?php $key = '1234567890123456';
$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.'
';
$jiemi = mcrypt_decrypt(mcrypt_rijndael_128,$key,hextostr($aesed),mcrypt_mode_ecb,$iv); #解密
echo '解密:';
echo trimend($jiemi);
?>
以上只是我列出的簡單的3種加密方法,事實上還有很多中方法,需要我們不斷的學習。密碼學的道路還任重而道遠。
本文標題: 如何在php中使用aes加密演算法加密資料
本文位址: /wangluo/php/323019.html
在PHP中使用AES加密演算法加密資料
在研究discuz 的時候,發現discuz有一套相當完美的加密演算法 相對而言 這個演算法可以將資料加密後,儲存起來,到需要用的時候,用之前加密的秘鑰將之還原。除了這個之外,還有aes這個演算法能夠將資料很好的加密起來,在傳輸過程中不容易被破解。在php中,我們必須先安裝好mcrypt這個模組,並...
在PHP中使用AES加密演算法加密資料
在研究discuz 的時候,發現discuz有一套相當完美的加密演算法 相對而言 這個演算法可以將資料加密後,儲存起來,到需要用的時候,用之前加密的秘鑰將之還原。除了這個之外,還有aes這個演算法能夠將資料很好的加密起來,在傳輸過程中不容易被破解。在php中,我們必須先安裝好mcrypt這個模組,並...
在PHP中使用AES加密演算法加密資料
在php中,我們必須先安裝好mcrypt這個模組,並且新增相應版本的擴充套件到php中,詳情可以看 不重新編譯php安裝mcrypt擴充套件 aes加密模式和填充方式有以下之中,但不是全部 演算法 模式 填充 16位元組加密後資料長度 不滿16位元組加密後長度 aes cbc nopadding 1...