c++ - 是否有安全字符串的良好 C++ 实现
问题描述
我想知道,C# SecureString 类的某种对应物是否有一些好的实现?
我已经找到了一些东西,对字节使用 XOR 操作,但这对我来说似乎太脆弱了。
解决方案
至少 C++ 加密库crypto++和botan都为“安全字符串”提供了帮助。那里可能有更多具有该功能的库。
例如,在 crypto++ 中,您可以使用:
#include <string>
#include <cryptopp/secblock.h>
using secure_string = std::basic_string<char, std::char_traits<char>, CryptoPP::AllocatorWithCleanup<char>>;
之后您创建的任何secure_string
内容(基本上就像任何其他常规std::string
ie一样声明secure_string str("secret");
),将(在实践中*)在销毁时将其内存归零。
Botan 有一个安全分配器,您可以使用与上一个示例中使用的 crypto++ 分配器相同的方式,它也会在空闲时清零内存。
在 SO 上还有一个非常相似的问题,涵盖了如何实现自己的安全分配器的主题,如果由于某种原因您不想包含外部库。
*std::string
设计时没有考虑到安全性。我建议阅读链接的答案和相关材料,了解它如何以及为什么会失败。
推荐阅读
- ruby - 将超时设置为 Resolv 以从域中获取 IP 地址
- rest - JMeter:如何发送多个唯一的 json 正文?
- apache-kafka - 如何在特定 doFun 执行结束时手动提交 Apache Beam 中的 Kafka 偏移量
- python - 在 Python 中创建具有不同长度的向量矩阵
- php - 如何从PHP中的嵌套数组中获取值
- date - 谷歌分析仪表板 - 在特定日期过滤掉特定数据
- python - pandas asype("datetime64") 不一致且不引发
- amazon-web-services - 用于工作的 AWS 服务
- algorithm - 需要一种编程算法来围绕线段进行紧密封装
- python-3.x - Ajax 如何与动态 Django 下拉列表一起工作?不选择所选类别中的每个子类别