RSA Encryption Library v1.4 - Asymmetric Encryption Made Easy

ภเﻮђt๓คгє

Well-known Member
Dec 14, 2021
3
3
31
RSA Encryption Library

The RSA Encryption Library (REL) is a library that provides developers with a simple encryption method or as a robust way to make digital signatures.

Installing REL
  1. Copy REL from the spoiler below.
  2. Create a .mscx file (name and location is irrelevant).
  3. Open the file.
  4. Paste REL into the file and save.
24
{"compiler_version":2.0}
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

Usage

To use REL, you need to follow 2 simple steps:
  1. Make sure to "include REL.mscx".
  2. Add "RSALib RSA = new RSALib()" in your code.

Table of Functions

.mod(number, number)Performs modulo of two numbers.
.PowerMod(number, number, number)Gives (a^b modulo c).
.Factorize(number)Find a factor of a given number.
.GCD(number, number)Finds the greatest common denominator of two numbers.
.IsPrime(number)Returns bool.
.factor(number)Returns array of found factors for given number.
.KeyGen(number, number)Generates an RSA key based on input range, low and high.
.old_encrypt/old_decrypt(number, number, number)Method to encrypt/decrypt single number. Requires, number - Private/Public Key - Exponent.
.encrypt(number[], number, number)Method to encrypt array of numbers. Requires, Array - Public Key - Exponent.
.decrypt(number[], number, number)Method to decrypt array of numbers. Requires, Array - Private Key - Exponent.

Example Program:
Code:
using System;
using Console;
using Array;
using Application;
using Util;
using String;
using File;
include "RSALib.mscx";

RSALib RSA = new RSALib();

bool run = true;

// Used for converting ASCII to numbers.
string[] asciiTable = [
        "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
        "[", "\\", "]", "^", "_", "`","-","!",
        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];

string[] options = ["1 > Gen Keys","2 > Encrypt","3 > Decrypt","4 > Exit"];
function showopt(){
    Console.WriteLine("Please Enter an Option:");
    number i = 1;
    while(i <= Array.Length(options)){
        Console.WriteLine(options[i]);
        i = i + 1;
    }
}

function genkey(number upper){
    number[] keys = RSA.KeyGen(1,upper;
    number i = 1;
    while(i<=3){
        Console.WriteLine(keys[i]);
        i = i + 1;
    }
}

Application.RequestAdminPrivilege();
while(run){
    showopt();
    string choice = Console.ReadLine();

    if(choice == "1"){
        Console.WriteLine("Enter Upper Range: ");
        number upper = Util.ToNumber(Console.ReadLine());
        genkey(upper);
    }
  
    if(choice == "2"){
        Console.WriteLine("Enter Text:");
        string text = Console.ReadLine();
        string[] textar = new string[String.Length(text)];
        number[] numar = new number[String.Length(text)];
        number i = 1;
        // Converts ASCII to numbers based on previous table
        while(i<=String.Length(text)){
            textar[i] = String.CharAt(text,i);
            numar[i] = Array.IndexOf(asciiTable,textar[i]);
            numar[i] = numar[i];
            i = i + 1;
        }
        Console.WriteLine("");
        Console.WriteLine("Enter Public Key:");
        number public = Util.ToNumber(Console.ReadLine());
      
        Console.WriteLine("");
        Console.WriteLine("Enter Exponent:");
        number exponent = Util.ToNumber(Console.ReadLine());
      
        Console.WriteLine("");
        number[] enc = RSA.encrypt(numar,public,exponent);
        i = 1;
        number y = i + 7;
        string str = "";
        while(i<=Array.Length(enc)){
            y = i -7;
            if(i==1){
                str = Util.ToString(enc[i]);
            }
            else{
                str = str..","..enc[i];
            }
            i = i + 1;
        }
        Console.WriteLine(str);
    }
  
    if(choice == "3"){
        Console.WriteLine("Enter Code:");
        string text = Console.ReadLine();
        Console.WriteLine(text);
        string[] textar = String.Split(text,",");
        number[] numar = new number[Array.Length(textar)];
        number i = 1;
        while(i<=Array.Length(textar)){
            numar[i] = Util.ToNumber(textar[i]);
            i = i + 1;
        }
      
      
        Console.WriteLine("");
        Console.WriteLine("Enter Private Key:");
        number private = Util.ToNumber(Console.ReadLine());
        Console.WriteLine(private);
      
        Console.WriteLine("");
        Console.WriteLine("Enter Exponent:");
        number exponent = Util.ToNumber(Console.ReadLine());
        Console.WriteLine(exponent);
      
        Console.WriteLine("");
        number[] dec = RSA.decrypt(numar,private,exponent);
        i = 1;
        string str = "";
        while(i<=Array.Length(dec)){
            number num = dec[i];
            Console.WriteLine(num);
            str = str..asciiTable[num];
            i = i + 1;
        }
        Console.WriteLine(str);
    }
  
    if(choice == "4"){
        Application.Exit();
    }
}


If you have any questions or bug reports then feel free to join our Discord server below, happy coding!
 
Last edited:

Metro

Civil Networks Employee
Employee
Group Moderator
Dec 26, 2020
11
6
71
Excellent work! I will try this out later!