Php Aes encrypt 筆記
公司剛好有需求, 要Server端加密資料跟手機交換資料.也就是
- Server端能解密手機端加密出來的資料
- 手機端要能解密Server端加密出來的資料
- 規格是以ECB 128bits 的方式來加密
接下來就是開始試著先能把自己加密出來的再解回去
encrypt.php
<?php
//產生加完時要用到的KEY
$rand_key = random_bits(16);
$string = '1234567890,A,b,c';
echo 'string to encrypted '.$string;
echo "<br>";
$encrypted_str = aes_encrypt($string);
echo 'encrypted string : '.$encrypted_str;
echo "<br>";
echo 'decrypted string : '.aes_decrypt($encrypted_str);
function aes_encrypt($str){
global $rand_key;
$key = $rand_key;
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_ECB);
//也可以用base64_encode來編碼, 只要注意你用什麼編就要用什麼反編
return bin2hex($encrypted);
}
function aes_decrypt($str){
global $rand_key;
$key = $rand_key;
//先前用16進制編碼的就用16進制反編回去
$str = hex2bin($str);
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_ECB);
return $str;
}
function random_bits($l = 8) {
return substr(md5(uniqid(mt_rand(), true)), 0, $l);
}
?>
實際狀況可能會有需要自己補0, 所以當加/解密的結果不同時, 可能要注意一下是不是補0的問題
沒有留言:
張貼留言