Giter Club home page Giter Club logo

gorsa's Introduction

goRSA

Usage

Import the library like that: import rsa "github.com/keinberger/goRSA"

Generating a key pair

The package contains two separe functions for generating the privateKey and publicKey. Both will return variables of type privateKey or publicKey.

One has to generate the privateKey before the publicKey, because the publicKey dependends on the privateKey.

E.g.:

privateKey := rsa.GeneratePrivateKey()
publicKey := rsa.GeneratePublicKey(privateKey)

Using the keys to encode/decode numbers

After having generated a key pair containing of privateKey and publicKey, you may use these variables to encrypt and decrypt numbers of type int64.

The package contains one function each for encrypting and decryping, both will return a variable of type int64.

Encrypting a number works like that:

privateKey := rsa.GeneratePrivateKey()
publicKey := rsa.GetPublicKey(privateKey)

var numberToEncrypt int64 = 100
encryptedNumber := rsa.Encrypt(numberToEncrypt, publicKey)

Decrypting the encrypted number works like that:

decryptedNumber := rsa.Decrypt(encryptedNumber, privateKey, publicKey)

The variables numberToEncrypt and decryptedNumber, used in this example, should be the same.

Encoding/Decoding strings

The package also supports the encryption/decryption of byte-slices (strings).

Here's how to use that:

Encrypting:

privateKey := rsa.GeneratePrivateKey()
publicKey := rsa.GetPublicKey(privateKey)

stringToEncrypt := "I love RSA"
encryptedString := string(rsa.EncryptBytes([]byte(stringToEncrypt), publicKey))

Decrypting:

decryptedString := string(rsa.DecryptBytes([]byte(encryptedString), privateKey, publicKey))

The variables stringToEncrypt and decryptedString, used in this example, should be the same.

Entire code example:

package main

import rsa "github.com/keinberger/goRSA"

func main() {
  privateKey := rsa.GeneratePrivateKey()
  publicKey := rsa.GetPublicKey(privateKey)

  var numberToEncrypt int64 = 100
  encryptedNumber := rsa.Encrypt(numberToEncrypt, publicKey)
  decryptedNumber := rsa.Decrypt(encryptedNumber, privateKey, publicKey)

  stringToEncrypt := "I love RSA"
  encryptedString := string(rsa.EncryptBytes([]byte(stringToEncrypt), publicKey))
  decryptedString := string(rsa.DecryptBytes([]byte(encryptedString), privateKey, publicKey))
}

Important

Numbers to encrypt shall not exceed 319, otherwise the encryption gets faulty.

gorsa's People

Contributors

keinberger avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.