添加项目文件。

This commit is contained in:
琴心
2022-04-26 15:31:46 +08:00
parent 4f1d4343fe
commit a1b66995e4
134 changed files with 18302 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
cmake_minimum_required ( VERSION 2.8...3.21 )
project (test_case3)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set (srcs
main.cpp
checksum.cpp
)
set (hdrs
checksum.h
)
add_executable ( ${PROJECT_NAME} ${hdrs} ${srcs})
#install
INSTALL( TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX} COMPONENT ${PROJECT_NAME} )

View File

@@ -0,0 +1,35 @@
#include "checksum.h"
inline DWORD rotl32a(DWORD x, DWORD n)
{
return (x << n) | (x >> (32 - n));
}
inline char to_lower(char c)
{
if (c >= 'A' && c <= 'Z') {
c = c - 'A' + 'a';
}
return c;
}
DWORD calc_checksum(BYTE *str, size_t buf_size, bool enable_tolower)
{
if (str == NULL) return 0;
DWORD checksum = 0;
for (size_t i = 0; i < buf_size; i++) {
checksum = rotl32a(checksum, 7);
char c = str[i];
if (enable_tolower) {
c = to_lower(c);
}
checksum ^= c;
}
return checksum;
}
DWORD calc_checksum(char *str, bool enable_tolower)
{
return calc_checksum((BYTE*)str, strlen(str), enable_tolower);
}

View File

@@ -0,0 +1,7 @@
#pragma once
#include <windows.h>
DWORD calc_checksum(char *str, bool enable_tolower);
DWORD calc_checksum(BYTE *str, size_t buf_size, bool enable_tolower);

View File

@@ -0,0 +1,46 @@
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include "checksum.h"
bool get_rand_string(char *buffer, size_t buffer_size)
{
const char charset[] = "ABCDEFGHIJKLMNOPQRSTUWVXYZabcdefghijklmnopqrstuwvxyz1234567890";
size_t charset_len = strlen(charset);
srand(GetTickCount());
for (size_t i = 0; i < buffer_size - 1; i++) {
size_t c_indx = rand() % charset_len;
buffer[i] = charset[c_indx];
Sleep(1000);
}
buffer[buffer_size - 1] = '\0';
return true;
}
bool is_password_valid(char *str)
{
DWORD checksum = calc_checksum(str, true);
if (checksum == 0x1f561e6a) { //calc_checksum("my_demo_password", true);
return true;
}
return false;
}
int main()
{
char str[14] = { 0 };
get_rand_string(str, 12);
std::cout << str << std::endl;
if (is_password_valid(str)) {
MessageBoxA(NULL, "Passed!", "Test Case 3", MB_OK);
} else {
std::cout << "Failed!" << std::endl;
MessageBoxA(NULL, "Failed!", "Test Case 3", MB_OK);
}
return 0;
}