小编ajd*_*jd.的帖子

如何安全地清除std :: string?

如何存储敏感数据(例如:密码)std::string

我有一个应用程序,提示用户输入密码,并在连接设置期间将其传递给下游服务器.我想在建立连接后安全地清除密码值.

如果我将密码存储为char *数组,我可以使用SecureZeroMemory等 API 来清除进程内存中的敏感数据.但是,我想在代码中避免使用char数组,并且正在寻找类似的东西std::string

c++ string passwords secure-coding

17
推荐指数
3
解决办法
7852
查看次数

将std :: vector传递给修改输入数组的函数

我正在使用第三方API(确切地说CryptEncrypt),它将C数组作为输入输出参数.从逻辑上讲,API归结为以下功能:

void add1(int *inout, size_t length)
{
  for(size_t i = 0; i < length; i++)
  {
    inout[i] += 1;
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图避免使用原始数组,所以我的问题是我可以使用std :: vector作为上面API的输入吗?类似于以下内容:

#include <vector>
int main()
{
  std::vector<int> v(10); // vector with 10 zeros
  add1(&v[0], v.size());  // vector with 10 ones?
}
Run Code Online (Sandbox Code Playgroud)

我可以使用向量的"连续存储"保证向其写入数据吗?我倾向于认为这是可以的(它适用于我的编译器),但如果比我更有知识的人能够确认这样的用法是否违反C++标准保证,我会感觉好多了.:)

提前致谢!

c++ pointers iterator stl vector

6
推荐指数
1
解决办法
684
查看次数

scons - 如何运行/后/所有目标已经建立

我最近选择了scons来为中型C++项目实现一个多平台构建框架.构建生成了一堆单元测试,应该在它的最后调用.如何实现这种目标?

例如,在我的顶级sconstruct中,我有

subdirs=['list', 'of', 'my', 'subprojects']
for subdir in subdirs:
    SConscript(dirs=subdir, exports='env', name='sconscript',
       variant_dir=subdir+os.sep+'build'+os.sep+mode, duplicate=0)
Run Code Online (Sandbox Code Playgroud)

每个subdir都有它的单元测试,但是,因为dll和它们内置的可执行文件之间存在依赖关系 - 我想保持测试的运行,直到所有的子目录都已构建和安装(我的意思是,使用env.Install ).

我应该在哪里编写循环来迭代构建的测试并执行它们?我试着把它放在这个循环之后 - 但是因为scons不能让你控制执行的顺序 - 它会在我想要之前执行得很好.

请帮助一个scons新手.:)

谢谢,

build-automation unit-testing scons

5
推荐指数
2
解决办法
6260
查看次数