我正在寻找一些用于加密表的轻量级加密算法。我已经解释了我的要求如下:
场景:为简单起见,只考虑SQL Server中的一个表。每3秒后,数据将插入表中。由于我在SQL Server中寻找加密和解密,因此我遇到了一些很好的链接(https://blog.sqlauthority.com/2009/04/28/sql-server-introduction-to-sql-server-encryption-and-symmetric-key-encryption-tutorial-with-script/)
约束:根据本文,我们需要更改我们必须将加密应用于varbinary
的任何列的数据类型,但我不想更改任何列的数据类型(数据库已经正常工作 - 加密除外)
所以,即使我将此EncryptByKey
视为一个简单的解决方案,但我不想更改所有列的数据类型。
我不需要更改数据类型的任何其他建议吗?
答案 0 :(得分:1)
加密的结果不是字符串,它是一个8位字节的数组,许多字节在任何字符编码中都不是有效字符。这就是varbinary
数据类型的原因。
最佳解决方案是将数据类型更改为varbinary
但如果这是不可接受的,则解决方法是将加密输出编码为有效的字符表示,最常见的两种是Base64和十六进制。这当然会在添加到数据库和检索时添加一些代码和时间。
答案 1 :(得分:0)
这取决于每列的当前数据类型。对于已经varchar
的东西,你可以只用Base64或十六进制编码密码文本,如zaph所说。对于需要维护特定格式的列,您需要调查Format Preserving Encryption - 例如how to encrypt credit card numbers while maintaining the format。