https://accounts.google.com/o/oauth2/auth?scope={scope}&redirect_uri={redirect_uri}&response_type=code&client_id={client_id}
Authorization: Bearer <полученный access_token>
Content-Type: application/json
{
"title": "Название папки"
"mimeType": "application/vnd.google-apps.folder"
}
wc.cbWndExtra = DLGWINDOWEXTRA;
string s = "876c0e09-70f7-4190-ab3a-254b6e5f461e";
byte[] data = Encoding.Unicode.GetBytes(s);
byte[] hash = new MD5CryptoServiceProvider().ComputeHash(data);
StringBuilder sb = new StringBuilder();
foreach (var b in hash)
{
sb.Append(b.ToString("x2"));
}
string outVAR = sb.ToString();
Console.WriteLine(outVAR);
string ToBytes(const wstring& str) {
const char* d = reinterpret_cast<const char*>(&str[0]);
string result(d, d+str.size()*2);
return result;
}
int main() {
wstring data = L"876c0e09-70f7-4190-ab3a-254b6e5f461e"; // на винде это будет UTF-16 строка, как и в C#
cout << md5(ToBytes(data)) << endl;
system("pause");
}
d1206f6bcf6d9b31860482123c288650
std::string WinMD5(const void * data, const size_t data_size)
{
HCRYPTPROV hProv = NULL;
if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)) {
return std::string();
}
HCRYPTPROV hHash = NULL;
BOOL hash_ok = CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
if (!hash_ok) {
CryptReleaseContext(hProv, 0);
return std::string();
}
if (!CryptHashData(hHash, static_cast<const BYTE *>(data), static_cast<DWORD>(data_size), 0)) {
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
return std::string();
}
DWORD cbHashSize = 0, dwCount = sizeof(DWORD);
if (!CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE *)&cbHashSize, &dwCount, 0)) {
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
return std::string();
}
std::vector<BYTE> buffer(cbHashSize);
if (!CryptGetHashParam(hHash, HP_HASHVAL, reinterpret_cast<BYTE*>(&buffer[0]), &cbHashSize, 0)) {
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
return std::string();
}
std::ostringstream oss;
for (auto item: buffer) {
oss << static_cast<unsigned int>(item);
}
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
return oss.str();
}
string ToBytes(const wstring& str) {
const char* d = reinterpret_cast<const char*>(&str[0]);
string result(d, d+str.size()*2);
return result;
}
int main() {
wstring data = L"876c0e09-70f7-4190-ab3a-254b6e5f461e";
cout << WinMD5(data.data(), data.size()* sizeof(wchar_t));
system("pause");
}
2093211110720710915549134413018604013480
QStorageInfo storage("e:/");
qDebug() << "name:" << storage.name();
qDebug() << "fileSystemType:" << storage.fileSystemType();
qDebug() << "size:" << storage.bytesTotal()/1000/1000 << "MB";
qDebug() << "availableSize:" << storage.bytesAvailable()/1000/1000 << "MB";
#include <QStorageInfo>
#include <QDebug>
std::string text = "hello world";
SHA512_CTX sha_ctx = { 0 };
unsigned char digest[SHA512_DIGEST_LENGTH];
SHA512_Init(&sha_ctx);
SHA512_Update(&sha_ctx, text.data(), text.length());
SHA512_Final(digest, &sha_ctx);
if (RSA_verify(NID_sha512, digest, SHA512_DIGEST_LENGTH, (const unsigned char*)sign.data(), sign.length(), publicRSA) == 1) {
// Успех
}
#include <windows.h>
#include <wininet.h>
#include <fstream>
#include <sstream>
#include <iostream>
#pragma comment(lib,"wininet.lib")
int main(int argc, char* argv[])
{
// инициализируем WinInet
HINTERNET hInternet = ::InternetOpen(TEXT("WinInet Test"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hInternet != NULL) {
// открываем HTTP сессию
HINTERNET hConnect = ::InternetConnect(hInternet, TEXT("localhost"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL,
INTERNET_SERVICE_HTTP, 0, 1u);
if (hConnect != NULL) {
// открываем запрос
HINTERNET hRequest = ::HttpOpenRequest(hConnect, TEXT("POST"), TEXT("test.php"), NULL, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION, 1);
if (hRequest != NULL) {
// посылаем запрос
std::string fileName = "c:\\test.png"; // путь к файлу
char hdrs[] = "Content-Type: multipart/form-data; boundary=---------------------------7d82751e2bc0858";
std::string frmdata = "-----------------------------7d82751e2bc0858\r\n";
// В этой строке "uploadedfile" - название поля формы
frmdata += "Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"" + fileName + "\"\r\nContent-Type: application/octet-stream\r\n\r\n";
std::ostringstream ostrm;
std::ifstream fin(fileName, std::ios::binary);
if (fin) {
ostrm << fin.rdbuf();
frmdata.append(ostrm.str());
frmdata += "\r\n-----------------------------7d82751e2bc0858--\r\n";
BOOL bSend = ::HttpSendRequestA(hRequest, hdrs, strlen(hdrs), &frmdata[0], frmdata.size());
if (bSend) {
std::string res; // В этой переменной будет ответ сервера
for (;;) {
// читаем данные
char szData[1024];
DWORD dwBytesRead;
BOOL bRead = ::InternetReadFile(hRequest, szData, sizeof(szData) - 1, &dwBytesRead);
// выход из цикла при ошибке или завершении
if (bRead == FALSE || dwBytesRead == 0)
break;
// сохраняем результат
szData[dwBytesRead] = 0;
res.append(szData);
}
std::cout << res;
}
}
// закрываем запрос
::InternetCloseHandle(hRequest);
}
// закрываем сессию
::InternetCloseHandle(hConnect);
}
// закрываем WinInet
::InternetCloseHandle(hInternet);
}
return 0;
}