欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

標準PHP的AES加密算法類

 更新時間:2023年05月03日 12:40:58   投稿:hebedich  
AES是分組密鑰,算法輸入128位數(shù)據(jù),密鑰長度也是128位。用Nr表示對一個數(shù)據(jù)分組加密的輪數(shù)(加密輪數(shù)與密鑰長度的關系如表1所列)。每一輪都需要一個與輸入分組具有相同長度的擴展密鑰Expandedkey(i)的參與。

分享一個標準PHP的AES加密算法類,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情況下比較容易搞錯,可以通過mcrypt_list_algorithms函數(shù)查看你需要的加密算法標識。

<?php
/**
?* AES128加解密類
?* @author dy
?*
?*/
defined('InEjbuy') or exit('Access Invalid!');
class Aes{
??? //密鑰
??? private $_secrect_key;
??? public function __construct(){
??????? $this->_secrect_key = 'MYgGnQE2jDFADSFFDSEWsdD';
??? }
??? /**
???? * 加密方法
???? * @param string $str
???? * @return string
???? */
??? public function encrypt($str){
??????? //AES, 128 ECB模式加密數(shù)據(jù)
??????? $screct_key = $this->_secrect_key;
??????? $screct_key = base64_decode($screct_key);
??????? $str = trim($str);
??????? $str = $this->addPKCS7Padding($str);
??????? $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);
??????? $encrypt_str =? mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);
??????? return base64_encode($encrypt_str);
??? }
??? /**
???? * 解密方法
???? * @param string $str
???? * @return string
???? */
??? public function decrypt($str){
??????? //AES, 128 ECB模式加密數(shù)據(jù)
??????? $screct_key = $this->_secrect_key;
??????? $str = base64_decode($str);
??????? $screct_key = base64_decode($screct_key);
??????? $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);
??????? $encrypt_str =? mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);
??????? $encrypt_str = trim($encrypt_str);
??????? $encrypt_str = $this->stripPKSC7Padding($encrypt_str);
??????? return $encrypt_str;
??? }
??? /**
???? * 填充算法
???? * @param string $source
???? * @return string
???? */
??? function addPKCS7Padding($source){
??????? $source = trim($source);
??????? $block = mcrypt_get_block_size('rijndael-128', 'ecb');
??????? $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){
??????? $source = trim($source);
??????? $char = substr($source, -1);
??????? $num = ord($char);
??????? if($num==62)return $source;
??????? $source = substr($source,0,-$num);
??????? return $source;
??? }
}

PHP AES算法的通用函數(shù)

 function aesEncrypt($data, $key, $iv) {
    $cipher = "aes-256-cbc";
    $padding = OPENSSL_PKCS1_PADDING;
    $encrypted = openssl_encrypt($data, $cipher, $key, $padding, $iv);
    return base64_encode($encrypted);
}
function aesDecrypt($data, $key, $iv) {
    $cipher = "aes-256-cbc";
    $padding = OPENSSL_PKCS1_PADDING;
    $decrypted = openssl_decrypt(base64_decode($data), $cipher, $key, $padding, $iv);
    return $decrypted;
}

該函數(shù)使用AES-256-CBC加密算法和PKCS1填充模式。它需要三個參數(shù):要加密/解密的數(shù)據(jù),密鑰和初始化向量(IV)。在加密時,數(shù)據(jù)將被加密并返回Base64編碼的字符串。在解密時,Base64編碼的字符串將被解碼并返回原始數(shù)據(jù)。

以上就是本文所述的全部內容了,希望對大家學習php的AES加密算法類有所幫助。

相關文章

  • PHP中Echo結構的用法

    PHP中Echo結構的用法

    PHP echo嚴格來說是一個語言結構(language construct)而不是一個函數(shù),echo的功用是用來輸出字串,是使用率非常高的一個語言結構,特別是未使用樣版模式的系統(tǒng),與echo類似的還有print,兩者差別并不大,普通的時候,其實使用echo就可以了
    2022-06-06
  • php替換字符串中間字符為省略號的方法

    php替換字符串中間字符為省略號的方法

    這篇文章主要介紹了php替換字符串中間字符為省略號的方法,可實現(xiàn)將字符串中間部分替換成省略號的功能,適用于賬號、手機號等敏感信息的部分隱藏,需要的朋友可以參考下
    2015-05-05
  • 使用PHP實現(xiàn)生成HTML靜態(tài)頁面

    使用PHP實現(xiàn)生成HTML靜態(tài)頁面

    在PHP網(wǎng)站開發(fā)中為了網(wǎng)站推廣和SEO等需要,需要對網(wǎng)站進行全站或局部靜態(tài)化處理,PHP生成靜態(tài)HTML頁面有多種方法,比如利用PHP模板、緩存等實現(xiàn)頁面靜態(tài)化,今天就以PHP實例教程形式討論PHP生成靜態(tài)頁面的方法。
    2015-11-11
  • 詳解PHP優(yōu)化巨量關鍵詞的匹配

    詳解PHP優(yōu)化巨量關鍵詞的匹配

    本文完整介紹了我的實現(xiàn)方式,如何將需要運行十小時的任務優(yōu)化到十分鐘以內。雖然實現(xiàn)語言是PHP,但本文介紹的更多的思想,應該能給大家一些幫助。
    2021-05-05
  • PHP的變量類型和作用域詳解

    PHP的變量類型和作用域詳解

    什么是變量的作用域?變量的作用域是指在腳本的一次生命周期內變量的有效范圍。一般來說有全局和局部之分
    2014-03-03
  • 詳解如何用PHP?實現(xiàn)多進程

    詳解如何用PHP?實現(xiàn)多進程

    這篇文章主要為大家介紹了如何用PHP?實現(xiàn)多進程實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • php魔術方法功能與用法實例分析

    php魔術方法功能與用法實例分析

    這篇文章主要介紹了php魔術方法功能與用法,結合實例形式簡單分析了php面向對象程序設計中常見魔術方法的功能與相關使用技巧,需要的朋友可以參考下
    2016-10-10
  • PHP概率計算函數(shù)匯總

    PHP概率計算函數(shù)匯總

    做項目的有時會弄個活動什么的,來讓用戶參加,既吸引用戶注冊,又提高網(wǎng)站的用戶活躍度。同時參加的用戶會獲得一定的獎品,有100%中獎的,也有按一定概率中獎的,大的比如中個ipad,小的中個Q幣。那么我們在程序里必然會設計到算法,即按照一定的概率讓用戶獲得獎品。
    2015-09-09
  • php中rename函數(shù)用法分析

    php中rename函數(shù)用法分析

    這篇文章主要介紹了php中rename()函數(shù)用法,較為詳細的分析了rename()函數(shù)中參數(shù)的含義及具體的使用方法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • 修改了一個很不錯的php驗證碼(支持中文)

    修改了一個很不錯的php驗證碼(支持中文)

    很早前在PHP喜悅國際村看到的一個驗證碼類,寫的很強。但有些邏輯方面感覺處理的不好,然后我不喜歡完全用session來處理驗證碼。這在大型系統(tǒng)中是很不好的
    2007-02-02

最新評論