我正在尝试安全地存储OAuth令牌和密钥,我知道最佳做法是加密这些并将其视为用户密码。我怎么能这样做,同时仍然能够解密它们并使用它们来对Twitter进行API调用(我只是哈希我的密码,这对于OAuth密钥不起作用,因为散列是单向的)?
我愿意在mySQL或PHP中这样做,所以我很欣赏每种方法中的示例或优点/缺点。
答案 0 :(得分:3)
您可以在PHP中使用mcrypt库(http://php.net/manual/en/book.mcrypt.php),它支持所有主要的加密算法。我建议你使用AES-128,这是一种行业标准。只需确保将密钥存放在安全的位置即可。然后,您可以加密数据,将其转换为base64并将其存储在数据库中。无论何时需要使用数据,只需从数据库中检索它并应用逆操作。
我不熟悉MySQL的工作原理。也许有可能存储加密数据并将密钥存储在安全的地方吗?
从安全的角度来看,PHP方法会更好,因为进出数据库的数据仍然是加密的。
请不要使用XOR密码,它充其量是可笑的。单个泄漏的普通密文对将显示您的完整密钥(plaintext XOR ciphertext = key
)。这仅在用作one-time pad时提供完美的安全性。当然你不能使用它,因为现在你必须为每一段数据使用不同的密钥和以某种方式必须安全地存储所有这些一次性填充。也许你可以使用一些加密;)......? (在这里插入无限循环)。