c++ - 是否有安全字符串的良好 C++ 实现

标签 c++ string security

<分区>

我想知道,是否有某种 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 一样声明,即 secure_string str("secret"); ),将(在实践中*)在销毁时将它们的内存清零。

牡丹有一个secure allocator ,您将使用与上一个示例中使用 crypto++ 分配器相同的方式,这也会将空闲内存清零。

还有一个很相似的问题here在 SO 上,这涵盖了如果出于某种原因您不想包含外部库,您将如何实现自己的安全分配器的主题。


* std::string 的设计并未考虑到安全性。我建议阅读链接的答案和相关 Material ,了解失败的方式和原因。

关于c++ - 是否有安全字符串的良好 C++ 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56888162/

相关文章:

android错误设置Drawable

php - PHP安全漏洞渗透测试

c++ - C++代码中如何灵活使用和替换std::shared_ptr或std::unique_ptr或裸指针?

C++ 在调用者中调用指针

javascript:最快的查找方式是字符串位于一组字符串中

security - IHTMLTxtRange.execCommand(“Copy”,false,null)由于IE设置而失败

django - 在 GAE/python 中存储密码的最佳实践

c++ - 自动使用无效

c++ - GMP 内存管理功能的 Clang 错误

c# - 字符串构造函数和字符串本身之间的C#括号