常用對稱加密演算法(DES AES)類(PHP)

2021-09-06 22:26:40 字數 2380 閱讀 5095

看注釋,啥也不說了,歡迎各種跨平台測試!

/** 

* 常用對稱加密演算法類 

* 支援金鑰:64/128/256 bit(位元組長度8/16/32) 

* 支援演算法:des/aes(根據金鑰長度自動匹配使用:des:64bit aes:128/256bit) 

* 支援模式:cbc/ecb/ofb/cfb 

* 密文編碼:base64字串/十六進製制字串/二進位制字串流 

* 填充方式: pkcs5padding(des) 

* * @author: linvo 

* @version: 1.0.0 

* @date: 2013/1/10 

*/  

class xcrypt  

$this->key = $key;  

switch (strtolower($mode))  

switch (strtolower($iv))  

}  /** 

* 獲取向量值 

* @param string 向量值編碼(base64/hex/bin) 

* @return string 向量值 

*/  

public function getiv($code = 'base64')  

return $ret;  

}  /** 

* 加密 

* @param string 明文 

* @param string 密文編碼(base64/hex/bin) 

* @return string 密文 

*/  

public function encrypt($str, $code = 'base64') else   

switch ($code)  

return $ret;  

}  /** 

* 解密  

* @param string 密文 

* @param string 密文編碼(base64/hex/bin) 

* @return string 明文 

*/  

public function decrypt($str, $code = "base64")  

if ($str !== false) else   

if ($this->mcrypt == mcrypt_des) $ret = $this->_pkcs5unpad($ret);  

$ret = trim($ret);  

}  return $ret;   

}   

private function _pkcs5pad($text)  

private function _pkcs5unpad($text));  

if ($pad > strlen($text)) return false;  

if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;  

$ret = substr($text, 0, -1 * $pad);  

return $ret;  

}  private function _hex2bin($hex = false)  

}  

給個小demo吧

<?php  

header('content-type:text/html;charset=utf-8;');  

include "xcrypt.php";  

echo '

';  

//  

$a = isset($_get['a']) ? $_get['a'] : '測試123';  

//金鑰  

$key = '12345678123456781234567812345678'; //256 bit  

$key = '1234567812345678'; //128 bit  

$key = '12345678'; //64 bit  

//設定模式和iv  

$m = new xcrypt($key, 'cbc', 'auto');  

//獲取向量值  

echo '向量:';  

var_dump($m->getiv());  

//加密  

$b = $m->encrypt($a, 'base64');  

//解密  

$c = $m->decrypt($b, 'base64');  

echo '加密後:';  

var_dump($b);  

echo '解密後:';  

var_dump($c);  

/  echo '

';  

常用對稱加密演算法(DES AES)類(PHP)

常用對稱加密演算法類 支援金鑰 64 128 256 bit 位元組長度8 16 32 支援演算法 des aes 根據金鑰長度自動匹配使用 des 64bit aes 128 256bit 支援模式 cbc ecb ofb cfb 密文編碼 base64字串 十六進製制字串 二進位制字串流 填充方...

對稱加密演算法 非對稱加密演算法

對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文 原始資料 和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文...

對稱加密演算法 DES加密演算法

一 對稱加密演算法 對稱加密也稱為常規加密 私鑰或單鑰加密。乙個對稱加密由5部分組成 明文 plaintext 這是原始資訊或資料,作為演算法的輸入。加密演算法 encryption algorithm 加密演算法對明文進行各種替換和轉換。金鑰 secret key 金鑰也是演算法的輸入。演算法進行...