我们的产品中存在这样一种情况,即长期以来,一些数据作为 SQL 字符串(选择 MS SQL 服务器或任何位置的 sybase SQL)存储在应用程序的数据库中,这些数据是通过 Windows API 函数CryptEncrypt 加密的。 (直接且可解密)
问题是 CryptEncrypt 可以在输出中产生 NULL,这意味着当它存储在数据库中时,字符串操作将在某些时候截断 CipherText。
理想情况下,我们希望使用一种算法,该算法将生成不包含 NULL 的 CipherText,因为这将对现有数据库造成最少的更改(将列从字符串更改为二进制以及处理二进制而不是字符串的代码)并且只需在数据库升级时解密现有数据并使用新算法重新加密。
该算法不需要是最安全的,因为数据库已经处于相当安全的环境中(不是开放网络/互网),但确实需要比 ROT13 更好(我几乎可以在脑海中解密现在!)
编辑:顺便说一句,将密文更改为密文的任何特殊原因?密文似乎使用更广泛......