php對稱演算法 php中對稱加密演算法的實現

2021-10-22 21:07:27 字數 1936 閱讀 9534

最近突發奇想要往資料庫裡儲存一些機密的東西,然後就想著怎麼讓別人即使進入到了資料庫也看不懂儲存的是什麼,那麼只有加密了;可是我們自己還要看呢,那只能找一些對稱加密的演算法了,我們想看的時候再解密回來。下面就介紹了php中簡單的對稱加密演算法實現。

前言在網上找到了乙個不錯的php方面的對稱加密演算法;在php的語法環境裡,有urlencode與urldecode,base64_encode和base64_decode自帶的對稱演算法,不過這些自帶的演算法不能稱之為加密演算法,只能說是編碼方式而已。可是我們可以利用這些來進行一些加工,來實現簡單的加密和解密演算法。

這次的加密和解密演算法是使用base64的方式改編的。通常我們使用base64_encode($str)產生的字串,不經過任何的加工的話,base64_decode()就能轉回我們之前的字串;可是如果我們在base64_encode()之後的字串裡插入幾個字元呢,那他就轉不回來了,即使轉過來也不是我們自己的字串。

示例**如下:

* 簡單對稱加密演算法之加密

* @param string $string 需要加密的字串

* @param string $skey 加密eky

* @return string

function encode($string = '', $skey = 'wenzi') {

$strarr = str_split(base64_encode($string));

$strcount = count($strarr);

foreach (str_split($skey) as $key => $value)

$key < $strcount && $strarr[$key].=$value;

return str_replace(array('=', '+', '/'), array('o0o0o', 'o000o', 'oo00o'), join('', $strarr));

* 簡單對稱加密演算法之解密

* @param string $string 需要解密的字串

* @param string $skey 解密key

* @return string

function decode($string = '', $skey = 'wenzi') {

$strarr = str_split(str_replace(array('o0o0o', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);

$strcount = count($strarr);

foreach (str_split($skey) as $key => $value)

$key <= $strcount && $strarr[$key][1] === $value && $strarr[$key] = $strarr[$key][0];

return base64_decode(join('', $strarr));

echo '

';
echo "string : " . $content . "

";echo "encode : " . ($enstring = encode($content)) . '

';echo "decode : " . decode($enstring);

exit();

上面的演算法裡我們可以看到:我們把base64_encode()產生的字元中插入我們提前設定的金鑰,然後再把裡面的特殊字元進行替換,即使別人看到這樣的字串也不知道是什麼。當然,這裡我們再稍微的改進下,比如把金鑰倒著插入到字串裡,金鑰base64後再進行插入等等,插入金鑰後再base64一次。

當然解密就是加密的反方向了,思考了一會兒才知道解密的原理:之前我們在字串裡插入了一些字元,現在解密時我們就要把他摘出來,首先把加密後的字串按每個陣列裡2個元素進行分組,然後判斷第二個字元是不是金鑰裡的,如果是,那麼第乙個字元就是原來base64裡的字元。

php 對稱加密

這次我給大家介紹一下 對稱加密 對稱加密 有乙個公共的金鑰 我們這次使用 base64 encode 和 base64 decode 進行操作 乙個 加密 乙個 解密 這兩個函式的使用方法如下 function jia info 加密的串 token 加密的金鑰 token function jie...

PHP長明文對稱加密 PHP實現對稱加密

以下是封裝的乙個類 xcrypt.php 常用對稱加密演算法類 支援金鑰 64 128 256 bit 位元組長度8 16 32 支援演算法 des aes 根據金鑰長度自動匹配使用 des 64bit aes 128 256bit 支援模式 cbc ecb ofb cfb 密文編碼 base64字...

PHP長明文對稱加密 PHP實現對稱加密與解密

這篇文章主要介紹了php實現的簡單對稱加密與解密方法,結合例項形式總結了常見的php對稱加密與解密操作方法,需要的朋友可以參考下 方法一 yii自帶的加密方法 加密 var string 要加密的值 secretkey wwj data res u id 解密 var type 加密前的值 aid ...