我有一个 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,但如果输入较长,结果会增加。
可以实现吗?有人知道对这种情况可能有帮助的指南或文档吗?
有关如何解决此问题的任何指导或文档都会有所帮助,谢谢!
即使只使用程序,安全问题也基本解决了。
示例...
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 函数 来执行类型检查等操作。
并且...我认为这不太可取,但是如果您使用上述过程中的查询,我认为您可以创建一个固定长度的查询。