【发布时间】:2017-08-17 18:05:26
【问题描述】:
我正在将 CI 1.2 升级到 CI 3.x。我有 3 个表,其中 11 个字段在 CI 1.x 中使用 SHA1 进行编码。 CI 3 使用 AES-256。实际上,我需要执行一个 UPDATE tablex set (fielda = $this->encrypt->encode_from_legacy(fielda)),它不是有效的 SQL。
如何枚举目标表的每一行并用编码函数的结果更新该行?
我想不出使用不同密码和模式在本机 SQL 语句中解码和编码的方法。
有什么想法吗?
【问题讨论】:
-
SHA1 是单向哈希函数,原始输入无法恢复。 AES-256 是可恢复加密,其中原始输入可以恢复。
-
不要加密密码,当攻击者得到数据库时,他也会得到加密密钥。使用随机盐在 HMAC 上迭代大约 100 毫秒,然后将盐与哈希一起保存。使用**
password_hash、PBKDF2、Bcrypt等函数和类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。使用 PHPpassword_hash和password_verify可以说是最好的解决方案。 -
您很可能需要
SELECT记录您要转换的内容。使用 PHP 解码然后重新编码。然后INSERT新编码的数据到你的新表中。如果我理解你的问题。就像其他人所说的那样,不要自己尝试存储您关心的密码 -
@Austin 无法从 SHA1 哈希中恢复原始密码。
-
我的错误。密码是 CI v1.x 中的 SHA1,但不是本文的主题。也许我需要更具体。我的问题与编码数据有关。这是编码的患者 hippa 数据。我有密钥,我可以对数据进行解码和编码,但我需要整体更新,并且必须为每个表的每一行执行每个表中的多个字段的可用解码/编码功能。
标签: php mysql codeigniter encryption encode