2016年8月11日 星期四

PHP AES encrypt

Php Aes encrypt 筆記

公司剛好有需求, 要Server端加密資料跟手機交換資料.也就是
  1.  Server端能解密手機端加密出來的資料
  2. 手機端要能解密Server端加密出來的資料
  3. 規格是以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的問題


沒有留言:

張貼留言