在PHP中使用AES加密演算法加密資料

2021-09-26 02:13:00 字數 2543 閱讀 5683

在研究discuz 的時候,發現discuz有一套相當完美的加密演算法(相對而言)。這個演算法可以將資料加密後,儲存起來,到需要用的時候,用之前加密的秘鑰將之還原。

除了這個之外,還有aes這個演算法能夠將資料很好的加密起來,在傳輸過程中不容易被破解。

在php中,我們必須先安裝好mcrypt這個模組,並且新增相應版本的擴充套件到php中,詳情可以看 不重新編譯php安裝mcrypt擴充套件

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 加密方案

<?php

$privatekey = "1234567812345678"; $iv = "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

在PHP中使用AES加密演算法加密資料

在研究discuz 的時候,發現discuz有一套相當完美的加密演算法 相對而言 這個演算法可以將資料加密後,儲存起來,到需要用的時候,用之前加密的秘鑰將之還原。除了這個之外,還有aes這個演算法能夠將資料很好的加密起來,在傳輸過程中不容易被破解。在php中,我們必須先安裝好mcrypt這個模組,並...

在PHP中使用AES加密演算法加密資料

在php中,我們必須先安裝好mcrypt這個模組,並且新增相應版本的擴充套件到php中,詳情可以看 不重新編譯php安裝mcrypt擴充套件 aes加密模式和填充方式有以下之中,但不是全部 演算法 模式 填充 16位元組加密後資料長度 不滿16位元組加密後長度 aes cbc nopadding 1...

在PHP中使用AES加密演算法加密資料及解密資料

這個演算法可以將資料加密後,儲存起來,到需要用的時候,用之前加密的秘鑰將之還原。除了這個之外,還有aes這個演算法能夠將資料很好的加密起來,在傳輸過程中不容易被破解。在php中,我們必須先安裝好mcrypt這個模組,並且新增相應版本的擴充套件到php中。aes加密模式和填充方式有以下之中,但不是全部...