Heim > Backend-Entwicklung > PHP-Tutorial > php mcrypt启用、加密以及解密的方法介绍

php mcrypt启用、加密以及解密的方法介绍

WBOY
Freigeben: 2016-07-25 09:00:01
Original
1014 Leute haben es durchsucht
  1. $str = "我是李云";
  2. $key = "123qwe.019860905061X";
  3. $cipher = MCRYPT_RIJNDAEL_128;
  4. $mode = MCRYPT_MODE_ECB;
  5. $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$mode),MCRYPT_RAND);
  6. echo "原文:".$str."
    ";
  7. $str_encrypt = mcrypt_encrypt($cipher,$key,$str,$mode,$iv);
  8. echo "加密后的内容是:".$str_encrypt."
    ";
  9. $str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt,$mode,$iv);
  10. echo "解密后的内容:".$str_decrypt."
    ";
  11. ?>
复制代码

运行结果: 原文:我是李云 加密后的内容是:B@鴹?=(I辩蝣Z% 解密后的内容:我是李云

1)、使用PHP加密扩展库Mcrypt对数据加密和解密之前,首先创建了一个初始化向量,简称为iv。由 $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);可见创建初始化 向 量需要两个参数:size指定了iv的大小;source为iv的源,其中值MCRYPT_RAND为系统随机数。

2)、函数mcrypt_get_iv_size($cipher,$modes)返回初始化向量大小,参数cipher和mode分别指算法和加 密模式。

3)、加密函数$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); 该函数的5个参数分 别如下:cipher——加密算法、key——密钥、data(str)——需要加密的数据、mode——算法模式、 iv——初始化向量

4)、解密函数 mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); 该函数和加密函数的参数几乎 一样,唯一不同的是data,也就是说data为需要解密的数据$str_encrypt,而不是原始数据$str。

//手册里的写法:

  1. //指定初始化向量iv的大小:
  2. $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  3. //创建初始化向量:
  4. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  5. //加密密码:
  6. $key = "123qwe.019860905061x";
  7. //原始内容(未加密):
  8. $text = "My name is Adam Li!";
  9. echo $text. "
    \n";
  10. //加密后的内容:
  11. $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  12. echo $crypttext. "\n
    ";
  13. //解密已经加密的内容:
  14. $str_decrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
  15. echo $str_decrypt;
  16. //原文链接 http://bbs.it-home.org/article/7382.html
  17. ?>
复制代码

加/解密请求的例子:

  1. $request_params = array(
  2. 'controller' => 'todo',
  3. 'action' => 'read',
  4. 'username' => "bl",
  5. 'userpass' => "a1"
  6. );
  7. $private_key = "28e336ac6c9423d946ba02d19c6a2632";
  8. //encrypt request
  9. $enc_request = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $private_key, json_encode($request_params), MCRYPT_MODE_ECB));
  10. echo "CRYPT:".$enc_request."
    ";
  11. //decrypt request
  12. $params = json_decode(trim(mcrypt_decrypt( MCRYPT_RIJNDAEL_256, $private_key, base64_decode($enc_request), MCRYPT_MODE_ECB )),true);
  13. echo "ENCRYPT:
    ";
  14. //print result
  15. var_dump($params);
  16. ?>
复制代码

注意: 加密和解密函数中的参数cipher、key和mode必须一一对应,否则数据不能被还原。



Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage