【问题标题】:Suitable alternative to CryptEncryptCryptEncrypt 的合适替代品
【发布时间】:2010-09-06 06:28:45
【问题描述】:

我们的产品中存在这样一种情况,即长期以来,一些数据作为 SQL 字符串(选择 MS SQL 服务器或任何位置的 sybase SQL)存储在应用程序的数据库中,这些数据通过 Windows API 函数CryptEncrypt.(直接和可解密)

问题在于 CryptEncrypt 可以在输出中产生 NULL,这意味着当它存储在数据库中时,字符串操作会在某些时候截断 CipherText。

理想情况下,我们希望使用生成不包含 NULL 的 CipherText 的算法,因为这将对现有数据库造成最少的更改(将列从字符串更改为二进制,并改为处理二进制的代码字符串),只需在数据库升级时解密现有数据并使用新算法重新加密。

算法不需要是最安全的,因为数据库已经处于相当安全的环境中(不是开放网络/互联网),但确实需要比 ROT13 更好(我几乎可以解密现在在我的脑海里!)

编辑:顺便说一句,将密文更改为密文的任何特殊原因?密文似乎使用更广泛...

【问题讨论】:

    标签: c++ encryption winapi


    【解决方案1】:

    任何半体面的算法最终都极有可能在生成的密文中的某处生成 NULL 值。

    为什么不做类似base-64 encode 你得到的二进制blob 在持久化到数据库之前呢? (sample implementation in C++)。

    【讨论】:

      【解决方案2】:

      存储哈希是个好主意。但是,请务必阅读 Jeff 的 You're Probably Storing Passwords Incorrectly

      【讨论】:

        【解决方案3】:

        这是一条有趣的路线 OJ。 我们正在研究一种不可逆方法的可行性(仍然确保我们没有显式检索要解密的数据),例如只需存储一个哈希来比较提交

        【讨论】:

          【解决方案4】:

          似乎处理此问题的开发人员将使用yEnc 包装现有加密以保持表的完整性,因为数据需要可检索,这节省了无限可能的所有混乱...... uhhh 在固定安装上更改柱类型。 伙计们干杯

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-01-11
            • 2020-02-08
            • 2018-02-09
            • 1970-01-01
            • 2020-05-26
            • 2017-11-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多