From 33c19c74c4a5f134eb65106c3de04fbdf8cf0550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Ccraciun2=E2=80=9D?= Date: Thu, 1 Mar 2018 10:43:58 +0000 Subject: [PATCH] trying hashing --- MAIN | Bin 45243 -> 0 bytes Main.cpp | 11 +- Menu.cpp | 6 +- README.md | 8 ++ md5.cpp | 362 +++++++++++++++++++++++++++++++++++++++++++++++++++++ md5.h | 93 ++++++++++++++ md5_sample | Bin 0 -> 19674 bytes pass.cpp | 10 ++ 8 files changed, 482 insertions(+), 8 deletions(-) delete mode 100755 MAIN create mode 100644 md5.cpp create mode 100644 md5.h create mode 100755 md5_sample create mode 100644 pass.cpp diff --git a/MAIN b/MAIN deleted file mode 100755 index 6706f6ed7f4f208dc37495387cd196c629e4bc50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45243 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 W1k-OO>cc5zA8`)$5oe_gss9I!eBt^4 diff --git a/Main.cpp b/Main.cpp index ce54835..0a6c17a 100644 --- a/Main.cpp +++ b/Main.cpp @@ -10,16 +10,13 @@ using namespace std; - - - - - - int main() { - // Menu.cpp file + + menuu(); + + return 0; diff --git a/Menu.cpp b/Menu.cpp index 41e9970..044b187 100644 --- a/Menu.cpp +++ b/Menu.cpp @@ -3,13 +3,17 @@ #include #include #include +#include +#include +#include using namespace std; - #include "libsqlite.hpp" #include "InGameMenu.cpp" + + int createTeam(int Player_ID, string teamName) { diff --git a/README.md b/README.md index 39ba194..8da7b7d 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,14 @@ git checkout - to check if its up to date g++ --std=c++14 Menu.cpp -o MENU -lsqlite3 g++ --std=c++14 Main.cpp -o MAIN -lsqlite3 + +g++ --std=c++14 hastest.cpp -o HAS -lsqlite3 + +g++ --std=c++14 Main.cpp md5.cpp -o HAS -lsqlite3 md5_sample && ./md5_sample + +g++ pass.cpp md5.cpp -o md5_sample && ./md5_sample + + g++ --std=c++14 MenuRascunho.cpp -o RASCUNHO -lsqlite3 diff --git a/md5.cpp b/md5.cpp new file mode 100644 index 0000000..b09431c --- /dev/null +++ b/md5.cpp @@ -0,0 +1,362 @@ +/* MD5 + converted to C++ class by Frank Thilo (thilo@unix-ag.org) + for bzflag (http://www.bzflag.org) + + based on: + + md5.h and md5.c + reference implemantion of RFC 1321 + + Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All +rights reserved. + +License to copy and use this software is granted provided that it +is identified as the "RSA Data Security, Inc. MD5 Message-Digest +Algorithm" in all material mentioning or referencing this software +or this function. + +License is also granted to make and use derivative works provided +that such works are identified as "derived from the RSA Data +Security, Inc. MD5 Message-Digest Algorithm" in all material +mentioning or referencing the derived work. + +RSA Data Security, Inc. makes no representations concerning either +the merchantability of this software or the suitability of this +software for any particular purpose. It is provided "as is" +without express or implied warranty of any kind. + +These notices must be retained in any copies of any part of this +documentation and/or software. + +*/ + +/* interface header */ +#include "md5.h" + +/* system implementation headers */ +#include + + +// Constants for MD5Transform routine. +#define S11 7 +#define S12 12 +#define S13 17 +#define S14 22 +#define S21 5 +#define S22 9 +#define S23 14 +#define S24 20 +#define S31 4 +#define S32 11 +#define S33 16 +#define S34 23 +#define S41 6 +#define S42 10 +#define S43 15 +#define S44 21 + +/////////////////////////////////////////////// + +// F, G, H and I are basic MD5 functions. +inline MD5::uint4 MD5::F(uint4 x, uint4 y, uint4 z) { + return x&y | ~x&z; +} + +inline MD5::uint4 MD5::G(uint4 x, uint4 y, uint4 z) { + return x&z | y&~z; +} + +inline MD5::uint4 MD5::H(uint4 x, uint4 y, uint4 z) { + return x^y^z; +} + +inline MD5::uint4 MD5::I(uint4 x, uint4 y, uint4 z) { + return y ^ (x | ~z); +} + +// rotate_left rotates x left n bits. +inline MD5::uint4 MD5::rotate_left(uint4 x, int n) { + return (x << n) | (x >> (32-n)); +} + +// FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. +// Rotation is separate from addition to prevent recomputation. +inline void MD5::FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) { + a = rotate_left(a+ F(b,c,d) + x + ac, s) + b; +} + +inline void MD5::GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) { + a = rotate_left(a + G(b,c,d) + x + ac, s) + b; +} + +inline void MD5::HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) { + a = rotate_left(a + H(b,c,d) + x + ac, s) + b; +} + +inline void MD5::II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) { + a = rotate_left(a + I(b,c,d) + x + ac, s) + b; +} + +////////////////////////////////////////////// + +// default ctor, just initailize +MD5::MD5() +{ + init(); +} + +////////////////////////////////////////////// + +// nifty shortcut ctor, compute MD5 for string and finalize it right away +MD5::MD5(const std::string &text) +{ + init(); + update(text.c_str(), text.length()); + finalize(); +} + +////////////////////////////// + +void MD5::init() +{ + finalized=false; + + count[0] = 0; + count[1] = 0; + + // load magic initialization constants. + state[0] = 0x67452301; + state[1] = 0xefcdab89; + state[2] = 0x98badcfe; + state[3] = 0x10325476; +} + +////////////////////////////// + +// decodes input (unsigned char) into output (uint4). Assumes len is a multiple of 4. +void MD5::decode(uint4 output[], const uint1 input[], size_type len) +{ + for (unsigned int i = 0, j = 0; j < len; i++, j += 4) + output[i] = ((uint4)input[j]) | (((uint4)input[j+1]) << 8) | + (((uint4)input[j+2]) << 16) | (((uint4)input[j+3]) << 24); +} + +////////////////////////////// + +// encodes input (uint4) into output (unsigned char). Assumes len is +// a multiple of 4. +void MD5::encode(uint1 output[], const uint4 input[], size_type len) +{ + for (size_type i = 0, j = 0; j < len; i++, j += 4) { + output[j] = input[i] & 0xff; + output[j+1] = (input[i] >> 8) & 0xff; + output[j+2] = (input[i] >> 16) & 0xff; + output[j+3] = (input[i] >> 24) & 0xff; + } +} + +////////////////////////////// + +// apply MD5 algo on a block +void MD5::transform(const uint1 block[blocksize]) +{ + uint4 a = state[0], b = state[1], c = state[2], d = state[3], x[16]; + decode (x, block, blocksize); + + /* Round 1 */ + FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */ + FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */ + FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */ + FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */ + FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */ + FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */ + FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */ + FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */ + FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */ + FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */ + FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ + FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ + FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ + FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ + FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ + FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ + + /* Round 2 */ + GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */ + GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */ + GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ + GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */ + GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */ + GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */ + GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ + GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */ + GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */ + GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ + GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */ + GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */ + GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ + GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */ + GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */ + GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ + + /* Round 3 */ + HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */ + HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */ + HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ + HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ + HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */ + HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */ + HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */ + HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ + HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ + HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */ + HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */ + HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */ + HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */ + HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ + HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ + HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */ + + /* Round 4 */ + II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */ + II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */ + II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ + II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */ + II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ + II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */ + II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ + II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */ + II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */ + II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ + II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */ + II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ + II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */ + II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ + II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */ + II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */ + + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; + + // Zeroize sensitive information. + memset(x, 0, sizeof x); +} + +////////////////////////////// + +// MD5 block update operation. Continues an MD5 message-digest +// operation, processing another message block +void MD5::update(const unsigned char input[], size_type length) +{ + // compute number of bytes mod 64 + size_type index = count[0] / 8 % blocksize; + + // Update number of bits + if ((count[0] += (length << 3)) < (length << 3)) + count[1]++; + count[1] += (length >> 29); + + // number of bytes we need to fill in buffer + size_type firstpart = 64 - index; + + size_type i; + + // transform as many times as possible. + if (length >= firstpart) + { + // fill buffer first, transform + memcpy(&buffer[index], input, firstpart); + transform(buffer); + + // transform chunks of blocksize (64 bytes) + for (i = firstpart; i + blocksize <= length; i += blocksize) + transform(&input[i]); + + index = 0; + } + else + i = 0; + + // buffer remaining input + memcpy(&buffer[index], &input[i], length-i); +} + +////////////////////////////// + +// for convenience provide a verson with signed char +void MD5::update(const char input[], size_type length) +{ + update((const unsigned char*)input, length); +} + +////////////////////////////// + +// MD5 finalization. Ends an MD5 message-digest operation, writing the +// the message digest and zeroizing the context. +MD5& MD5::finalize() +{ + static unsigned char padding[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + if (!finalized) { + // Save number of bits + unsigned char bits[8]; + encode(bits, count, 8); + + // pad out to 56 mod 64. + size_type index = count[0] / 8 % 64; + size_type padLen = (index < 56) ? (56 - index) : (120 - index); + update(padding, padLen); + + // Append length (before padding) + update(bits, 8); + + // Store state in digest + encode(digest, state, 16); + + // Zeroize sensitive information. + memset(buffer, 0, sizeof buffer); + memset(count, 0, sizeof count); + + finalized=true; + } + + return *this; +} + +////////////////////////////// + +// return hex representation of digest as string +std::string MD5::hexdigest() const +{ + if (!finalized) + return ""; + + char buf[33]; + for (int i=0; i<16; i++) + sprintf(buf+i*2, "%02x", digest[i]); + buf[32]=0; + + return std::string(buf); +} + +////////////////////////////// + +std::ostream& operator<<(std::ostream& out, MD5 md5) +{ + return out << md5.hexdigest(); +} + +////////////////////////////// + +std::string md5(const std::string str) +{ + MD5 md5 = MD5(str); + + return md5.hexdigest(); +} \ No newline at end of file diff --git a/md5.h b/md5.h new file mode 100644 index 0000000..1d0b524 --- /dev/null +++ b/md5.h @@ -0,0 +1,93 @@ +/* MD5 + converted to C++ class by Frank Thilo (thilo@unix-ag.org) + for bzflag (http://www.bzflag.org) + + based on: + + md5.h and md5.c + reference implementation of RFC 1321 + + Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All +rights reserved. + +License to copy and use this software is granted provided that it +is identified as the "RSA Data Security, Inc. MD5 Message-Digest +Algorithm" in all material mentioning or referencing this software +or this function. + +License is also granted to make and use derivative works provided +that such works are identified as "derived from the RSA Data +Security, Inc. MD5 Message-Digest Algorithm" in all material +mentioning or referencing the derived work. + +RSA Data Security, Inc. makes no representations concerning either +the merchantability of this software or the suitability of this +software for any particular purpose. It is provided "as is" +without express or implied warranty of any kind. + +These notices must be retained in any copies of any part of this +documentation and/or software. + +*/ + +#ifndef BZF_MD5_H +#define BZF_MD5_H + +#include +#include + + +// a small class for calculating MD5 hashes of strings or byte arrays +// it is not meant to be fast or secure +// +// usage: 1) feed it blocks of uchars with update() +// 2) finalize() +// 3) get hexdigest() string +// or +// MD5(std::string).hexdigest() +// +// assumes that char is 8 bit and int is 32 bit +class MD5 +{ +public: + typedef unsigned int size_type; // must be 32bit + + MD5(); + MD5(const std::string& text); + void update(const unsigned char *buf, size_type length); + void update(const char *buf, size_type length); + MD5& finalize(); + std::string hexdigest() const; + friend std::ostream& operator<<(std::ostream&, MD5 md5); + +private: + void init(); + typedef unsigned char uint1; // 8bit + typedef unsigned int uint4; // 32bit + enum {blocksize = 64}; // VC6 won't eat a const static int here + + void transform(const uint1 block[blocksize]); + static void decode(uint4 output[], const uint1 input[], size_type len); + static void encode(uint1 output[], const uint4 input[], size_type len); + + bool finalized; + uint1 buffer[blocksize]; // bytes that didn't fit in last 64 byte chunk + uint4 count[2]; // 64bit counter for number of bits (lo, hi) + uint4 state[4]; // digest so far + uint1 digest[16]; // the result + + // low level logic operations + static inline uint4 F(uint4 x, uint4 y, uint4 z); + static inline uint4 G(uint4 x, uint4 y, uint4 z); + static inline uint4 H(uint4 x, uint4 y, uint4 z); + static inline uint4 I(uint4 x, uint4 y, uint4 z); + static inline uint4 rotate_left(uint4 x, int n); + static inline void FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); + static inline void GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); + static inline void HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); + static inline void II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); +}; + +std::string md5(const std::string str); + +#endif \ No newline at end of file diff --git a/md5_sample b/md5_sample new file mode 100755 index 0000000000000000000000000000000000000000..9e54b1bb4e5fab719e838d537c927b554ac1dcb4 GIT binary patch literal 19674 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 VMU-tEY+@`3)^5*PxG>(u{|oZVoa+Dp literal 0 HcmV?d00001 diff --git a/pass.cpp b/pass.cpp new file mode 100644 index 0000000..760c51c --- /dev/null +++ b/pass.cpp @@ -0,0 +1,10 @@ +#include +#include "md5.h" + +using std::cout; using std::endl; + +int main() +{ + cout << "md5 of 'grape': " << md5("grape") << endl; + return 0; +} \ No newline at end of file