gpt4 book ai didi

c - 在 C 中为运行时安全地存储密码

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:48 24 4
gpt4 key购买 nike

我目前正在用 C 编写一个邮件客户端。但是我对存储密码有疑问。

我只想在程序运行时一直存储它。由于密码是一个“字符串”,我可以将它存储在一个字符数组中,该数组在程序结束前不久被覆盖。但这会相对不安全。

如何在程序运行期间安全地存储密码?

最佳答案

您避免以明文形式保存密码是完全正确的。

如果您必须保留密码(例如,您需要定期将其发送到服务器),最好以加密形式保存。哪种加密形式由您决定。这使得对程序进行内存分析的人更难看到密码。 (更难,并非不可能;如果您必须将密码发送到服务器,并且有人可以物理访问机器以进行内存分析,您所能做的就是让它变得困难。)

使用它时,你会这样做:

  • 分配一个临时数组
  • 解密成数组
  • 使用数组(例如,将密码发送到服务器)
  • 覆盖数组
  • 释放阵法

如果你想真的偏执,覆盖数组时,按顺序做几项,例如(这只是一个例子):

  • 全零
  • 全部
  • 选择一个随机字节值
  • 用该字节值填充数组
  • 用移位一次的值再次填充
  • 再次用位移后的值填充
  • 用第三次位移后的值再次填充
  • 用第四次位移后的值再次填充
  • 用第五次位移后的值再次填充
  • 用第六次位移后的值再次填充
  • 用第七次位移后的值再次填充
  • 全部
  • 全零

...显然,一些研究人员有时能够通过对 RAM 中的存储单元进行取证分析来检索先前数据的回声。但我认为这属于偏执狂的范畴。 (但这样做很便宜。;-))

关于c - 在 C 中为运行时安全地存储密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24822476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com