gpt4 book ai didi

mysql - MySql 中的 aes_encrypt 而不在 sql 中使用 aes_encrypt

转载 作者:行者123 更新时间:2023-11-29 08:29:55 24 4
gpt4 key购买 nike

我想做

select name, lower(hex(aes_encrypt(name,'mykey'))) as encValue from myTable;

不使用该部件

lower(hex(aes_encrypt(name,'mykey'))) as encValue 在sql语句中。

我该怎么做?我可以以某种方式在其他地方进行加密,并且仍然将其与结果一起返回吗?也许在一个函数中?我这样做只是为了在安全受到损害时保持安全。

所以我的结果将是:

name | encValue
me | s63gd7dnd8dm

最佳答案

您可以创建这样的函数:

CREATE FUNCTION EncryptName(name VARCHAR(50)) -- use the same type as myTable.name
RETURNS VARCHAR(50)
RETURN LOWER(HEX(AES_ENCRYPT(name,'mykey')));

然后你可以做这样的事情:

SELECT name, EncryptName(name) as encValue FROM myTable;

确保保护此函数定义免遭不必要的访问。您正在将安全问题从应用程序层转移到数据库层。

您还可以创建一个 View 以进一步掩盖加密过程:

CREATE VIEW EncryptedView AS
SELECT name, LOWER(HEX(AES_ENCRYPT(name,'mykey'))) AS encValue FROM myTable;

然后您可以将其用作常规表:SELECT * FROM EncryptedView。同样的安全问题也适用于 View 定义。

关于mysql - MySql 中的 aes_encrypt 而不在 sql 中使用 aes_encrypt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com