<分区>
我想知道,是否有某种 C# SecureString 类对应物的良好实现?
我已经找到了一些东西,对字节使用 XOR 操作,但这对我来说似乎太脆弱了。
<分区>
我想知道,是否有某种 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/