在設計到頁面分享的活動中,需要對分享頁面上的引數進行加密,以防止因為明文被人惡意攻擊**。於是,我用上了對稱加密中比較簡潔的異或加密。
為了簡單易行,設計上,我將所有引數以json物件封裝起來,然後再進行加密:
1. json封裝物件
$data = json_encode($data);
2.異或對稱加密(兩種方法,自行選擇)
/**
* 方法1
* 直接異或對稱加密
*/function
xor_enc
($str,$key)
return
$crytxt;
}
/**
* 方法2(使用該函式要求秘鑰資料不能具有週期性【如:123123就是不行的】,否則加密可能無效)
* 異或對稱加密
* 利用a^b^c = a^(b^c)
* 若資料比秘鑰短,則秘鑰超出部分會以資料長度為週期迴圈運算加密
* 若資料比秘鑰長,則秘鑰週期延長運算加密資料
* 最終原始資料和加密資料長度一樣長
*/function
xor_enc
($data,$key)else}}
return
$crytxt;
}
加密後的資料可能不是字串,那就利用特殊方法將資料轉為字串
$data = bin2str($data); //自定義資料轉字串方法
base64編碼後形成的字串可能也不滿足url編碼,最後還要進行url編碼
$data = urlencode($data);
進行上述加密步驟後,的確能把資訊進行加密並且在網際網路上安全流通,但是很容易有個問題,如果密文上的某個字元被篡改,而不影響解析出來的json格式解析流程,並且剛好改變了其中動態變化的資料,這就尷尬了,這程式上是無法識別該資料的正確性的,因此還需要對加密前資料還要進行進一步處理。
如,在原資料的前面或者後面加上32位的crc校驗碼:
function
crcfixenc
($data)
function
crcfixdec
($data)
//加密前
crcfixenc($jsondata);
//解密後校驗
$jsondata = crcfixdec($data);
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 ...