Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <fstream>
  4. #include <chrono>
  5. #include <random>
  6.  
  7. unsigned UserID = 0;
  8. std::mt19937 rnd(time(NULL));
  9. std::fstream input;
  10.  
  11. template <typename T,unsigned S>
  12. inline unsigned arraysize(const T (&v)[S]) { return S; }
  13.  
  14. struct AccountInfo
  15. {
  16.     unsigned ID;
  17.     std::string login, password;
  18.     unsigned long Hash, Salt;
  19. };
  20. // TODO:
  21. namespace utils
  22. {
  23.     template<typename T>
  24.     void Save(T data, char* filename)
  25.     {
  26.         input.open(filename, std::ios::out | std::ios::binary | std::ios::app);
  27.         input<<std::hex<<data<<'\n';
  28.     }
  29.     // The same function but with argument overloading
  30.     template<typename T, typename...Args>
  31.     void Save(T data, char* filename, Args... args)
  32.     {
  33.         input.open(filename, std::ios::out | std::ios::binary | std::ios::app);
  34.         input<<std::hex<<data<<'\n';
  35.         Save(args...);
  36.     }
  37.     template<typename T>
  38.     void Read(T data, char* filename)
  39.     { // The Data needs to be read and processed in the block form which is
  40.          /* I = UserID, H = Hash, L = Login
  41.           * I*4 + H*24 + L*24 */
  42.         input.open(filename, std::ios::in | std::ios::binary);
  43.         std::string line;
  44.         while(std::getline(input, line))
  45.         {
  46.             std::istringstream iss(line);
  47.             if(!(iss>>data)) { break; }
  48.         }
  49.         unsigned char PID[4];
  50.         for(int i = 0; i<arraysize(PID); ++i)
  51.         { PID[i] = line[i]; }
  52.         unsigned char PHASH[24];
  53.         for(int j = 4; j<(arraysize(PHASH)+j); ++j)
  54.             { PHASH[j] = line[j]; }
  55.         unsigned char PLOGIN[24];
  56.         for(int k = 28; k<(arraysize(PLOGIN)+k); ++k)
  57.             { PLOGIN[k] = line[k]; }
  58.     }
  59.     template<typename T, typename... Args>
  60.     void Read(T data, Args... args, char* filename)
  61.     {
  62.         input.open(filename, std::ios::in | std::ios::binary);
  63.         std::string line;
  64.         while(std::getline(input, line))
  65.         {
  66.             std::istringstream iss(line);
  67.             if(!(iss>>data)) { break; }
  68.         }
  69.         unsigned char PID[4];
  70.         for(int i = 0; i<arraysize(PID); ++i)
  71.         { PID[i] = line[i]; }
  72.         unsigned char PHASH[24];
  73.         for(int j = 4; j<(arraysize(PHASH)+j); ++j)
  74.             { PHASH[j] = line[j]; }
  75.         unsigned char PLOGIN[24];
  76.         for(int k = 28; k<(arraysize(PLOGIN)+k); ++k)
  77.             { PLOGIN[k] = line[k]; }
  78.         Read(args...);
  79.     }
  80. };
  81. class Register
  82. {
  83.     AccountInfo reg_user;
  84. public:
  85.     void MakeUser();
  86. };
  87. class Login
  88. {
  89.  
  90. };
  91. class Info
  92. {
  93.     AccountInfo user;
  94.     unsigned SaltResult = utils::Read(user.Salt, "C:\\Database.txt"), HashResult = utils::Read(user.Hash, "C:\\Database.txt");
  95. public:
  96.     unsigned long MakeSalt(const std::string& UserLogin, unsigned UID)
  97.     {
  98.         UserLogin = utils::Read(user.login);
  99.         UID = Read(user.ID);
  100.         unsigned sum = 0;
  101.         for(unsigned i = UID; i<(UserLogin[i]+ID); ++i)
  102.         {
  103.             sum+=static_cast<unsigned>(UserLogin[i]);
  104.             SaltResult+=(sum+rnd())%UserLogin.size();
  105.         }
  106.         return SaltResult;
  107.     }
  108.     #define HASH_SIZE 24
  109.     unsigned long MakeHash(unsigned SaltResult, unsigned UID)
  110.     {
  111.         for(int pos = UID; pos<HASH_SIZE+UID; ++pos)
  112.             HashResult+=SaltResult%(UID+pos);
  113.         return HashResult;
  114.     };
  115.     #undef HASH_SIZE
  116. };
  117.  
  118. int main()
  119. {
  120.     return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement