当前位置: 首页 > 工具软件 > MCrypt > 使用案例 >

使用MCrypt

施俊驰
2023-12-01

加密数据

<?php
	/*
	*本代码进行数据加密
	*由于脚本需要发送两个cookie,所以大部分php代码位于全部html之前
	*/

	/*
	*对于密匙来书,md5()函数利用一些随机单词和数字创建出32字符串的字符串
	*/
	$key = md5('77 public drop-shadow java');
	
	/*
	*被加密的数据
	*/
	$data = 'rosebud';
	
	/*
	*本例使用Rijndael算法,它也被称为"高级加密标准(AES)"
	*模式主要有四种:ECB(电子码表),CBC(密码块连接),CFB(密码反馈),OFB(输出反馈)	
	*/
	$m = mcrypt_module_open('rijndael-256','','cbc','');
	
	/*
	*创建初始矢量
	*本例在使用CBC时使用初始矢量来提高安全性
	*php手册建议创建这样的矢量
	*/
	/*
	*mcrypt_enc_get_iv_size()函数能够为要使用的密码生成一个适当的初始矢量
	*需要声明的是,在window上应该使用MYCYPT_RAND而不是MCRYPT_DEV_RANDOM,并且要在这行代码前调用函数srand()来确保生成随机结果
	*/
	$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($m),MCRYPT_RAND);
	
	/*
	*创建mycrypt在执行加密是需要的缓存
	*/
	mcrypt_generic_init($m,$key,$iv);
	
	/*
	*对数据进行加密
	*/
	$data = mcrypt_generic($m,$data);
	
	
	/*
	*执行加密后,关闭全部缓存及模块
	*/
	mcrypt_generic_deinit($m);
	mcrypt_module_close($m);
	
	/*
	*对于cookie数据来说,必须经过base64_encode()处理才适合保存到cookie里面
	*/
	setcookie('thing1',base64_encode($data));
	setcookie('thing3',"aaa",time()-1000);
	setcookie('thing2',base64_encode($iv));
?>
<html>
	<head>
    	<meta http-equiv="content-type" content="text/html" charset="utf-8">
        <title>crypt</title>      
    </head>
    <body>    
		<p>the cookie has been sent.its value is '<?php echo base64_encode($data) ?>'</p>
  </body>
</html>

解密数据

<?php
	if(isset($_COOKIE['thing1']) && isset($_COOKIE['thing2'])){
		$key = md5('77 public drop-shadow java');	
		
		$m = mcrypt_module_open('rijndael-256','','cbc','');
		
		$iv = base64_decode($_COOKIR['thing2']);
		
		mcrypt_generic_init($m,$key,$iv);
		
		$data = mcrypt_generic($m,base64_decode($_COOKIE['thing1']));
		
		mcrypt_generic_deinit($m);
		
		mcrypt_module_close($m);
		
		echo '<p>the cookie has been received.its value is "'.trim($data).'"</p>';
	}else{
		echo "<p>no cookie</p>";	
	}
?>


 类似资料: