如何使用固定大小的加密结果对Golang中的动态SQL查询进行加密/解密?

问题描述 投票:0回答:1

我有一个 Golang 应用程序,我根据结构比较动态生成 SQL 查询,此结果的数据类型是

string
。喜欢:

"SELECT id FROM table WHERE column_a = value_a AND column_b IN (value_b, value_c)"

WHERE
子句将是动态的,我们可以有n条件

出于安全目的,我想对查询结果进行加密以将其存储在数据库中,稍后我需要对其进行解密以在作业流程中执行。

我希望加密产生固定大小的结果以确保数据库中的一致性,并且还可以防止在加密结果太大而无法保存在数据库中时出现错误,例如,如果我的限制为255字符,错误参考:SQL Error 1406(数据太长).

我尝试使用此示例https://go.dev/play/p/VXD0j_DuycG,但如果输入较长,结果会增加。

可以实现吗?有人知道对这种情况可能有帮助的指南或文档吗?

有关如何解决此问题的任何指导或文档都会有所帮助,谢谢!

go encryption
1个回答
0
投票

即使只使用程序,安全问题也基本解决了。

示例...

delimiter //
CREATE OR REPLACE PROCEDURE Something(vals varchar(2000))
BEGIN
    SELECT id
    FROM TABLE
    WHERE column_a = value_a AND json_contains(vals, column_b, '$');
END//

CALL Something('["value_b", "value_c"]');

如果需要,您还可以使用 json 函数 来执行类型检查等操作。

并且...我认为这不太可取,但是如果您使用上述过程中的查询,我认为您可以创建一个固定长度的查询。

© www.soinside.com 2019 - 2024. All rights reserved.