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

標(biāo)準(zhǔn)PHP的AES加密算法類

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

分享一個(gè)標(biāo)準(zhǔn)PHP的AES加密算法類,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情況下比較容易搞錯(cuò),可以通過mcrypt_list_algorithms函數(shù)查看你需要的加密算法標(biāo)識(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填充模式。它需要三個(gè)參數(shù):要加密/解密的數(shù)據(jù),密鑰和初始化向量(IV)。在加密時(shí),數(shù)據(jù)將被加密并返回Base64編碼的字符串。在解密時(shí),Base64編碼的字符串將被解碼并返回原始數(shù)據(jù)。

以上就是本文所述的全部?jī)?nèi)容了,希望對(duì)大家學(xué)習(xí)php的AES加密算法類有所幫助。

相關(guān)文章

  • PHP中Echo結(jié)構(gòu)的用法

    PHP中Echo結(jié)構(gòu)的用法

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

    php替換字符串中間字符為省略號(hào)的方法

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

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

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

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

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

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

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

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

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

    php魔術(shù)方法功能與用法實(shí)例分析

    這篇文章主要介紹了php魔術(shù)方法功能與用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了php面向?qū)ο蟪绦蛟O(shè)計(jì)中常見魔術(shù)方法的功能與相關(guān)使用技巧,需要的朋友可以參考下
    2016-10-10
  • PHP概率計(jì)算函數(shù)匯總

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

    做項(xiàng)目的有時(shí)會(huì)弄個(gè)活動(dòng)什么的,來讓用戶參加,既吸引用戶注冊(cè),又提高網(wǎng)站的用戶活躍度。同時(shí)參加的用戶會(huì)獲得一定的獎(jiǎng)品,有100%中獎(jiǎng)的,也有按一定概率中獎(jiǎng)的,大的比如中個(gè)ipad,小的中個(gè)Q幣。那么我們?cè)诔绦蚶锉厝粫?huì)設(shè)計(jì)到算法,即按照一定的概率讓用戶獲得獎(jiǎng)品。
    2015-09-09
  • php中rename函數(shù)用法分析

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

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

    修改了一個(gè)很不錯(cuò)的php驗(yàn)證碼(支持中文)

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

最新評(píng)論