Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //"g++" "main.cpp" -o "main" -lb2 -ljsoncpp
- #include <sstream>
- #include <string>
- #include <iostream>
- #include <ctime>
- #include <blake2.h>//libb2-dev
- #include <jsoncpp/json/json.h>//libjsoncpp-dev
- #include <iomanip>
- char TOPSECRET[] = "TOPSECRET";
- long dateCounter = 0;
- std::string gameKey(long id2=-1){
- long long id = std::time(0)*1000+dateCounter;
- if(id2!=-1){
- id = id2;
- }
- dateCounter++;
- std::stringstream inStream;
- inStream << id << "|keys|" << TOPSECRET;
- const std::string inString = inStream.str();
- const char* in = inString.c_str();
- size_t outlen=64;
- uint8_t* out = new uint8_t[outlen];
- char key[] = "";
- blake2b(out,in,&key,outlen,inString.length(),0);
- std::stringstream a,b,c,d;
- for(int i=0;i<16;i++){
- a << std::setfill('0') << std::setw(2) << std::hex << static_cast<unsigned>(out[i]);
- }
- for(int i=16;i<16*2;i++){
- b << std::setfill('0') << std::setw(2) << std::hex << static_cast<unsigned>(out[i]);
- }
- for(int i=16*2;i<16*3;i++){
- c << std::setfill('0') << std::setw(2) << std::hex << static_cast<unsigned>(out[i]);
- }
- for(int i=16*3;i<16*4;i++){
- d << std::setfill('0') << std::setw(2) << std::hex << static_cast<unsigned>(out[i]);
- }
- Json::Value obj(Json::objectValue);
- obj["id"] = id;
- Json::Value arr(Json::arrayValue);
- arr.append(a.str());
- arr.append(b.str());
- arr.append(c.str());
- arr.append(d.str());
- obj["keys"] = arr;
- Json::Writer* writer = new Json::FastWriter();
- std::string jsonOut = writer->write(obj);
- delete writer;
- //delete in;//WTF segfault
- delete out;
- return jsonOut;
- }
- int main(){
- std::cout << gameKey();
- }
- const TOPSECRET = "TOPSECRET", blake = require("blakejs").blake2bHex;
- let dateCounter = 0;
- function gameKey(checkId){//per key: 34us js VS 10us c++
- let id = checkId || (Date.now()/1000>>0)*1000+(dateCounter++%1000),
- keys = blake(`${id}|keys|${TOPSECRET}`).match(/.{32}/g);
- return {id, keys};
- }
- console.log(gameKey());
Add Comment
Please, Sign In to add comment