commit 9064d57ee2cf192f6fcbed28accf9d368df6a51c Author: Ambigapathy Vinayak Date: Tue Sep 17 14:50:27 2024 +0200 test rsa encryption/decryption diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..05f4819 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +/vendor/ +/bin/ +/bin-int/ +/.vscode/ +/.vs/ +/docs/ +**.log +**.sln +**.vcxproj* +**.make +**Makefile +**dependencies.lua +**linker.lua diff --git a/app/premake5.lua b/app/premake5.lua new file mode 100644 index 0000000..52b17a7 --- /dev/null +++ b/app/premake5.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" + } diff --git a/app/src/app.cpp b/app/src/app.cpp new file mode 100644 index 0000000..6100cdb --- /dev/null +++ b/app/src/app.cpp @@ -0,0 +1,76 @@ +#include +#include +#include + +int random(int max, int min = 0) +{ + int n = rand(); + while (n > max || n < min) n = rand(); + return n; +} + +std::vector prime_range(int max, int min = 2) +{ + //Sieve of Eratosthenes algo from https://www.baeldung.com/cs/prime-number-algorithms + std::vector primes; + std::vector 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; +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..5ca00de --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "Bakacrypt", + "author": "anulax1225", + "git": "", + "packages": [ + { + "author": "anulax1225", + "name": "bakatools" + } + ] +} \ No newline at end of file diff --git a/premake5.lua b/premake5.lua new file mode 100644 index 0000000..ee7cda0 --- /dev/null +++ b/premake5.lua @@ -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 "" + \ No newline at end of file