我正在开发一个项目,其中所有字符串都必须在内存中加密(AES或任何其他加密算法)(内存转储保护),并且还必须支持各种操作,例如assign()
, operator+=
等。
在我的实施研究中,我遇到了几个解决方案;一些提到继承自std :: string(std :: basic_string)但未能提供std::string
缺少虚拟析构函数的解决方法,并且还没有为我的目的覆盖任何虚函数。提到的另一个解决方案是覆盖其模板默认参数并提供自定义allocator
和char traits
。在检查给定的解决方案时。虽然当时看起来很有希望。我有几个问题要正确覆盖以下功能:
因为使用解密字符串的allocate
值调用strlen
,所以感觉就像需要一个额外的函数来首先计算加密字符串的大小,然后再分配它。
使用给定的c ++ 11实现这样的事情是否合理?到目前为止,我没有通过网络找到任何可行的解决方案。
我的最后一个选择是简单地用我自己的自定义类包装std :: string并提供自适应功能。 operator+=
,assign
,c_str()..
谢谢!
编辑:
std::string str = "Hello World"
,会使std :: string'成员_Bx的加密字符串为" Hello World"
将删除c_str()或data()的任何用法。