有人可以解释这两种停止线程然后再次继续执行线程的行为差异吗?
Sleep(); //from Win32
std::this_thread::sleep_for();
Run Code Online (Sandbox Code Playgroud)
我是根据多线程行为而不是系统兼容性来说明的。
我有这个程序工作,使用AES128加密一个9字节的字符串,wincrypt.h但当我更改密钥的最后一个字符时发生一些奇怪的事情:
从L"3igcZhRdWq96m3GUmTAiv2"对实施例L"3igcZhRdWq96m3GUmTAiv1"或L"3igcZhRdWq96m3GUmTAiv9" 加密的文本仍然是彼此相同.
#include <Windows.h>
#include <wincrypt.h>
#include <stdio.h>
#pragma comment(lib, "crypt32.lib")
#define BUFFER_SIZE 16
//params: <input file> <output file> <is decrypt mode> <key>
int wmain()
{
wchar_t key[] = L"3igcZhRdWq96m3GUmTAiv2";
wchar_t *key_str = key;
size_t len = lstrlenW(key_str);
DWORD dwStatus = 0;
BOOL bResult = FALSE;
wchar_t info[] = L"Microsoft Enhanced RSA and AES Cryptographic Provider";
HCRYPTPROV hProv;
if (!CryptAcquireContextW(&hProv, NULL, info, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)) {
dwStatus = GetLastError();
printf("CryptAcquireContext failed: %x\n", dwStatus); …Run Code Online (Sandbox Code Playgroud)