我目前正在C写一个邮件客户端。但我有一个关于存储密码的问题。
只要程序运行,我只想存储它。 密码是"字符串"我可以将它存储在一个char数组中,在程序结束前不久会被覆盖。但这相对不安全。
如何在程序运行期间安全地存储密码?
答案 0 :(得分:2)
你完全避免以明文形式保存密码。
如果 保留密码(例如,您需要定期将其发送到服务器),最好将其保存为加密形式。哪种加密形式由您决定。这使得对程序进行内存分析的人更难以查看密码。 (更难,不是不可能;如果你必须将密码发送到服务器,并且某人有物理访问机器进行内存分析,你所能做的就是让它变得困难。)
使用它时,你会这样做:
如果您希望 真的 偏执,那么在覆盖数组时,请按顺序执行多个项目(这只是一个示例):
......显然,一些研究人员有时能够通过对RAM中存储器单元的取证分析来检索先前数据的回声。但我认为这属于偏执狂的范畴。 (但这样做很便宜。;-))