最近在做项目的时候,需要对一个数字串进行加密,但是加密密文又需要可以可以逆转,因此不能使用md5或sha之类的,只能用aes或des。翻了资料,尝试了在php层进行加密解密,用到了php的加密函数库,但是发现及时每次使用相同的明文和密钥进行aes加密,得到的密文每次都不一样,但是解密时却能得到相同的明文。这就是aes的好处。在PHP层将数字串进行加密,完后插入到表中,这完全是正确的。但是判断表中这个数字串是否存在就难搞了,因为使用相同的明文和密钥运算出来的密文跟上次不一样。这样的话,SELECT * FROM table WHERE column = ?,这个参数的值就肯定配对不上,找不到记录。也有另外一个方法,把表中的记录都拿出来,通过循环解密再与传入的参数进行配对,但是这样不好,每次检查都要遍历表和循环解密,估计内存和CPU会挂掉。无奈之下,只好到数据库层找找办法。
那就在MySQL这一层试试,发现MySQL也有aes加密的函数,尽管试试。实验完,发现MySQL的实现与php的不一样,MySQL中每次出来的密文都相同。虽然这样看起来不太妥,但是先这样办。其中有个不同的地方是,MySQL的aes函数加密出来的字符串是二进制的,需要转成16进制才能插入到表中。
-- AES加密
SELECT AES_ENCRYPT('1234567890123456','abcdefgh');
-- AES解密
SELECT AES_DECRYPT(AES_ENCRYPT('1234567890123456','abcdefgh') ,'abcdefgh') ;
-- AES加密后进行转成16进制
SELECT HEX(AES_ENCRYPT('1234567890123456','abcdefgh'));
-- AES加密后进行转成16进制,再转二进制进行解密
SELECT AES_DECRYPT(UNHEX(HEX(AES_ENCRYPT('1234567890123456','abcdefgh'))),'abcdefgh');
本文地址:http://ryan-d.iteye.com/blog/1562802
分享到:
相关推荐
4. **验证与使用**:解密后的数据进行验证,确保数据完整性,然后在前端进行后续处理。 这个DEMO项目为开发者提供了一个完整的端到端加密示例,涵盖了前后端的加密解密流程,对于理解AES加密以及如何在实际项目中...
在MATLAB中,我们可以使用`openssl`库或者自定义函数来实现AES加密和解密。MATLAB提供了与C或C++等其他语言接口的能力,因此可以通过调用外部程序来执行AES操作。 为了在MATLAB中访问MySQL数据库,我们需要使用...
MySQL 字段加密 ...MySQL 字段加密是通过设置 varbinary 类型的字段、设置加密盐为全局变量和使用 AES_ENCRYPT 和 AES_DECRYPT 函数来实现的。这种方法可以对敏感数据进行保护,提高数据库的安全性。
总结来说,MySQL内置的加密函数提供了方便的数据库内加密解密解决方案,适合在数据库层面处理敏感数据。而Python的base64加密则更适用于应用程序中的数据处理,尤其在需要在不同系统间交换数据时。两者各有优势,...
总之,MySQL的AES加密和解密功能为数据安全提供了一层保障,但安全策略应是多维度的,包括但不限于合适的加密算法、密钥管理、安全编程实践以及合规的数据保护政策。理解并正确使用这些工具,可以帮助开发者构建更...
在本篇文章中,我们使用Crypto-js库来实现AES加密算法。我们定义了两个函数:Decrtpt(解密)和Encrypt(加密)。在Decrtpt函数中,我们使用AES.decrypt方法来解密密码,而在Encrypt函数中,我们使用AES.encrypt方法...
例如,使用AES加密,可以按照以下步骤进行: 1. 导入CryptoJS库:在HTML文件中引入CryptoJS.js。 2. 生成密钥:使用CryptoJS.enc.Hex.parse生成一个16、24或32字节的密钥。 3. 加密数据:使用CryptoJS.AES.encrypt...
描述中提到了MySQL,这可能是指在数据库层面使用AES加密。Laravel提供了与MySQL的集成,可以利用MySQL的内置AES函数进行加密。例如,你可以创建一个自定义的数据库连接,配置使用`AES_ENCRYPT`和`AES_DECRYPT`函数来...
AES加密提供了多种密钥长度(如128位、192位和256位),可以提供更高级别的数据保护。 使用AES_ENCRYPT()和AES_DECRYPT()的语法与ENCODE()和DECODE()类似,但通常会包含更多的选项,比如选择不同的加密模式或初始化...
除了 MySQL 自带的加密函数,还可以使用其他加密库,如 Python 的 Crypto 库,来进行数据库密码的加密和解密。这种方法的安全性相对较高。使用这些库可以提供更多的加密算法和选项,以满足不同的安全需求。 数据...
一、Python与MySQL在信息加密解密中的应用 Python是一种高级编程语言,以其简洁的语法和丰富的库支持而广受欢迎,尤其在数据处理和网络应用方面。在信息加密解密系统中,Python可以作为后端开发语言,用于实现各种...
MySQL中AES_ENCRYPT('密码','钥匙')函数可以对字段值做加密处理,AES_DECRYPT(表的字段名字,'钥匙')函数解密处理,下面这篇文章主要给大家介绍了关于MySQL利用AES_ENCRYPT()与AES_DECRYPT()加解密的正确方法,文中给...
MySQL提供了对数据进行加密和解密的函数,如`MD5()`用于生成信息的MD5 128位哈希值,`AES_ENCRYPT()`和`AES_DECRYPT()`用于对数据进行AES加密和解密。 ### 格式化函数 格式化函数主要用于格式化字符串和数字的输出...
AES_ENCRYPT()和AES_DECRYPT()可以加密/解密使用官方AES算法的数据。该算法使用128位密钥来编码,但用户可以将其扩展到256位。MySQL选用128位密钥,因为这样算法实现更快,而且对大多数用户而言它也足够安全了。 ...
MySQL数据库系统也提供了内置的加密函数,如`AES_ENCRYPT`和`AES_DECRYPT`,用于对数据进行AES加密和解密。这两个函数使用相同的密钥对数据进行加密和解密,使得密码在数据库中以密文形式存储,增强了安全性。此外,...