test rsa encryption/decryption

crypt
Ambigapathy Vinayak ago%!(EXTRA string=7 months)
commit 9064d57ee2
  1. 13
      .gitignore
  2. 50
      app/premake5.lua
  3. 76
      app/src/app.cpp
  4. 11
      package.json
  5. 19
      premake5.lua

13
.gitignore vendored

@ -0,0 +1,13 @@
/vendor/
/bin/
/bin-int/
/.vscode/
/.vs/
/docs/
**.log
**.sln
**.vcxproj*
**.make
**Makefile
**dependencies.lua
**linker.lua

@ -0,0 +1,50 @@
project "App"
kind "ConsoleApp"
language "C++"
cppdialect "C++20"
systemversion "latest"
targetdir("%{wks.location}/bin/" .. outputdir .. "/%{prj.name}")
objdir("%{wks.location}/bin-int/" .. outputdir .. "/%{prj.name}")
include "linker.lua"
files
{
"src/**.h",
"src/**.cpp"
}
filter "configurations:Debug"
defines
{
"BK_DEBUG",
"DEBUG"
}
runtime "Debug"
symbols "on"
filter "configurations:Release"
defines
{
"BK_RELEASE",
"NDEBUG"
}
runtime "Release"
optimize "on"
filter "system:windows"
buildoptions "/MT"
staticruntime "on"
defines
{
"BK_PLATFORM_WINDOWS"
}
filter "system:linux"
staticruntime "on"
defines
{
"BK_PLATFORM_LINUX"
}

@ -0,0 +1,76 @@
#include <bakatools.h>
#include <math.h>
#include <stdlib.h>
int random(int max, int min = 0)
{
int n = rand();
while (n > max || n < min) n = rand();
return n;
}
std::vector<int> prime_range(int max, int min = 2)
{
//Sieve of Eratosthenes algo from https://www.baeldung.com/cs/prime-number-algorithms
std::vector<int> primes;
std::vector<bool> primes_check(max);
std::fill(primes_check.begin(), primes_check.end(), true);
for (int i = 2; i < sqrt(max); i++)
if (primes_check[i])
{
int j = i * i;
while (j <= max)
{
primes_check[j] = false;
j += i;
}
}
for (int i = min; i < primes_check.size(); i++)
if (primes_check[i]) primes.push_back(i);
return primes;
}
int gcd(int a, int b)
{
if (b == 0) return a;
else return gcd(b, a % b);
}
void rsa()
{
auto primes = prime_range(100);
//int p = primes[random(primes.size())];
//int q = primes[random(primes.size())];
int p = 3;
int q = 11;
int n = p * q;
int phi = (p - 1) * (q - 1);
int e = 2;
while(e < phi)
{
if(gcd(e, phi) == 1) break;
e += 1;
}
float d = (e^-1) % phi;
BK_INFO("n:{0} phi:{1} e:{2} d:{3}", n, phi, e, d);
int msg = 11;
float C = pow(msg, e);
C = fmod(C, n);
BK_INFO(C);
float M = pow(C,d);
M = fmod(M, n);
BK_INFO(M);
}
int main()
{
Bk::Log::init("Bakacypher");
rsa();
return 0;
}

@ -0,0 +1,11 @@
{
"name": "Bakacrypt",
"author": "anulax1225",
"git": "",
"packages": [
{
"author": "anulax1225",
"name": "bakatools"
}
]
}

@ -0,0 +1,19 @@
workspace "Bakacrypt"
architecture "x64"
configurations { "Debug", "Release" }
startproject "App"
flags
{
"MultiProcessorCompile"
}
linkgroups "On"
outputdir = "%{cfg.system}-%{cfg.architecture}-%{cfg.buildcfg}"
include "dependencies.lua"
group "App"
include "app"
group ""
Loading…
Cancel
Save