8.1. MySQL 加密函数

8.1.1. AES_ENCRYPT / AES_DECRYPT

简单用法

			
mysql> select AES_ENCRYPT('helloworld','key');
+---------------------------------+
| AES_ENCRYPT('helloworld','key') |
+---------------------------------+
|                                 |
+---------------------------------+
1 row in set (0.00 sec)

mysql> select AES_DECRYPT(AES_ENCRYPT('helloworld','key'),'key');
+----------------------------------------------------+
| AES_DECRYPT(AES_ENCRYPT('helloworld','key'),'key') |
+----------------------------------------------------+
| helloworld                                         |
+----------------------------------------------------+
1 row in set (0.00 sec)

mysql>
			
			

加密数据入库

			
CREATE TABLE `encryption` (
	`mobile` VARBINARY(16) NOT NULL,
	`key` VARCHAR(32) NOT NULL
)
ENGINE=InnoDB;

INSERT INTO encryption(`mobile`,`key`)VALUES( AES_ENCRYPT('13691851789',md5('13691851789')), md5('13691851789')) 
select AES_DECRYPT(mobile,`key`), length(mobile) from encryption;
			
			

8.1.2. 通过PHP mcrypt 函数加密解密MySQL数据库

由于AES_DECRYPT()与AES_ENCRYPT()会耗费一部们数据库资源,于是我想出在外部实现AES_DECRYPT/AES_ENCRYPT同时完全兼容mysql。

MySQL AES_ENCRYPT() 加密,通过 PHP mcrypt_decrypt() 解密

PHP mcrypt_encrypt 加密,通过MySQL AES_DECRYPT() 解密

			
<?php
$dbh = new PDO ( 'mysql:host=192.168.6.1;dbname=test', 'www', 'passw0rd' );
$dbh->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$dbh->exec ( 'set names utf8' );
$data = 'Helloworld!!!';
//$data = '123456789';
$key = 'neo';

$sql = "SELECT AES_ENCRYPT(:data, :key) as string";
$stmt = $dbh->prepare ( $sql );
$stmt->execute ( array (
		':data' => $data,
		':key' => $key 
) );
$row = $stmt->fetch ( PDO::FETCH_ASSOC );
$encrypt = $row ['string'];
printf ( "MySQL AES Encrypt: %s \n", $encrypt );

$sql = "SELECT AES_DECRYPT(:data, :key) as string";
$stmt = $dbh->prepare ( $sql );
$stmt->execute ( array (
		':data' => $encrypt,
		':key' => $key 
) );
$row = $stmt->fetch ( PDO::FETCH_ASSOC );

$decrypt = $row ['string'];
printf ( "MySQL AES Decrypt: %s \n", $decrypt );
printf ( "-----------------------------------\n" );
function aes_decrypt($encrypted, $key) {
	return rtrim ( mcrypt_decrypt ( MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_ECB, '' ), "\x00..\x1F" );
}
function aes_encrypt($decrypted, $key) {
	return mcrypt_encrypt ( MCRYPT_RIJNDAEL_128, $key, $decrypted, MCRYPT_MODE_ECB, '' );
}

printf ( "MySQL AES_ENCRYPT => PHP AES_Decrypt: %s => %s \n", $encrypt, aes_decrypt ( $encrypt, $key ) );

$str = 'Test by neo';

$sql = "SELECT AES_DECRYPT(:data, :key) as string";
$stmt = $dbh->prepare ( $sql );
$stmt->execute ( array (
		':data' => aes_encrypt ( $str, $key ),
		':key' => $key 
) );
$row = $stmt->fetch ( PDO::FETCH_ASSOC );

$decrypt = $row ['string'];
printf ( "PHP encrypt => MySQL Decrypt: %s => %s \n", $str, $decrypt );

printf ( "PHP enctypt => PHP  Decrypt: %s => %s \n", $str, aes_decrypt ( aes_encrypt ( $str, $key ), $key ) );
?>
			
			

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Axure 8.1.0.3400是Axure RP 8的一个版本。Axure RP是一个流行的原型工具,用于设计和创建交互式网站或应用程序的原型。 Axure RP 8拥有一些新的特性和功能,例如CSS样式管理和管理页面组件。除此之外, Axure RP 8具有更好的性能,提高了大型项目的处理速度。此版本也改进了Axure Online的共享功能,使用户更容易地与同事或客户协作。 此外,Axure RP 8还可以与其他平台集成,在其设计过程提供更广泛的功能,并增加了一些插件来增强其功能。Axure RP 8还提供了更好的文档和交互式笔记功能,帮助用户更好地展示其设计意图。总的来说,Axure 8.1.0.3400是一个强大的原型设计工具,可以帮助用户更好地设计和创建交互式应用程序和网站。 ### 回答2: Axure 8.1.0.3400 是一款功能强大的原型设计工具,它具有多种强大的功能和工具,可以帮助设计师更加高效地完成原型设计。Axure 8.1.0.3400 支持多种交互式原型设计,包括页面切换、界面元素交互、用例文档设计等等。 Axure 8.1.0.3400 的主要特点包括: 1. 支持多种交互式原型设计 Axure 8.1.0.3400 支持多种交互式原型设计,包括页面切换、界面元素交互、用例文档设计等等。这样设计师可以使用 Axure 8.1.0.3400 快速创建交互性的原型模型,以便更好的展示设计方案。 2. 支持多种设计元素 Axure 8.1.0.3400 包含大量的设计元素,包括按钮、文本框、下拉框、复选框等等。这些设计元素可以快速的集成到设计,以便更好的完成设计任务。 3. 支持团队协作 Axure 8.1.0.3400 支持团队协作,多个设计师可以同时对一个原型进行编辑和修改,并且可以集成到项目管理,以便更好的协作开发和管理。 总之,Axure 8.1.0.3400 是一款非常强大的原型设计工具,可以帮助设计师快速完成高质量的原型设计工作,是设计领域的不可缺少的工具之一。 ### 回答3: Axure是一款流行的原型设计工具,8.1.0.3400版本是其一个较新的版本。Axure可以帮助用户快速地构建交互式原型,以及进行多维度的设计和文档编制。Axure 8.1.0.3400更新了一些功能和问题,例如增强了文件存储的安全性,提高了程序的稳定性、性能和速度,优化了图片资源的存储和调用,增加了自定义工具栏的功能,增强了与Sketch的兼容性等。此外,该版本还支持多个语言环境的切换,以满足不同语言团队的需求。Axure 8.1.0.3400是一个强大的工具,用户可以使用它来构建高质量、高效率的设计方案,帮助您在产品开发的不同阶段更快更好地迭代,促进团队之间的协作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值