All Projects → bartobri → mrrcrypt

bartobri / mrrcrypt

Licence: GPL-3.0 license
A command line encryption/decryption tool using an adaptive mirror field algorithm.

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to mrrcrypt

reactive-trader
In the coming weeks this plans to become a Gekko plugin that reacts to market changes, finding and running only the most profitable strategies.
Stars: ✭ 91 (+121.95%)
Mutual labels:  crypto
Open Crypto Tracker
Bitcoin / Alts private portfolio tracker, with email / text / alexa / telegram price alerts, charts, leverage support and much more.
Stars: ✭ 59 (+43.9%)
Mutual labels:  crypto
brapi
API ilimitada da Bovespa, moedas e crypto. Ganhe acesso aos dados de qualquer ação, moeda ou criptomoeda
Stars: ✭ 36 (-12.2%)
Mutual labels:  crypto
tradeview
A platform for trading crypto currency pairs on crypto exchanges and running crypto currency pair strategies.
Stars: ✭ 69 (+68.29%)
Mutual labels:  crypto
onepile
Playground for the future of private notes and document management
Stars: ✭ 41 (+0%)
Mutual labels:  crypto
widgets
💸 Web3 Payments with any token. DePay simplifies and improves Web3 Payments with the power of DeFi. Accept any token with on-the-fly conversion with state-of-the-art widgets.
Stars: ✭ 32 (-21.95%)
Mutual labels:  crypto
crazy-awesome-crypto
A list of awesome crypto and blockchain projects
Stars: ✭ 35 (-14.63%)
Mutual labels:  crypto
DEGEN
Distributing POAPs to DAOs in discord, twitter, and more.
Stars: ✭ 27 (-34.15%)
Mutual labels:  crypto
libsodium-xchacha20-siv
Deterministic/nonce-reuse resistant authenticated encryption scheme using XChaCha20, implemented on libsodium.
Stars: ✭ 25 (-39.02%)
Mutual labels:  crypto
covert
An encryption format offering better security, performance and ease of use than PGP. File a bug if you found anything where we are worse than our competition, and we will fix it.
Stars: ✭ 20 (-51.22%)
Mutual labels:  crypto
MKT
Exchange Price Service , Stocks , Cryptocurrency,Stock prediction and more
Stars: ✭ 27 (-34.15%)
Mutual labels:  crypto
kubecrypt
Helper for dealing with secrets in kubernetes.
Stars: ✭ 23 (-43.9%)
Mutual labels:  crypto
api-version-2
Executium API Version 2 - A comprehensive trading system API which connects traders with dozens of exchanges. Currently in closed beta
Stars: ✭ 82 (+100%)
Mutual labels:  crypto
cryptos
Pure Python from-scratch zero-dependency implementation of Bitcoin for educational purposes
Stars: ✭ 846 (+1963.41%)
Mutual labels:  crypto
jscrypto
Crypto library for Node/ES6/Typescript/Browser.
Stars: ✭ 20 (-51.22%)
Mutual labels:  crypto
cryptowallet-cli
CW is a crypto wallet generator CLI tool for a lot of blockchains: Bitcoin, Ethereum, Binance Smart Chain and many others
Stars: ✭ 45 (+9.76%)
Mutual labels:  crypto
price-prediction-bot
🔮 Run backtest over PancakeSwap and CandleGenie Prediction and place realtime bets - Trading Bot
Stars: ✭ 59 (+43.9%)
Mutual labels:  crypto
HTML-Crypto-Currency-Chart-Snippets
💹 Simple HTML Snippets to create Tickers / Charts of Cryptocurrencies with the TradingView API 💹
Stars: ✭ 89 (+117.07%)
Mutual labels:  crypto
cryptosub
Track 170+ cryptocurrency subreddits, view most popular coins, activity trends, most frequent words, and more
Stars: ✭ 37 (-9.76%)
Mutual labels:  crypto
RCIG Coordination Repo
A Coordination repo for all things Rust Cryptography oriented
Stars: ✭ 175 (+326.83%)
Mutual labels:  crypto

Version

MrrCrypt

The goal of this project is to provide a simple and robust command-line tool for encrypting and decrypting data using an adaptive mirror field algorithm.

WARNING - While the results of this program pass almost all cryptographic tests for randomness (see below), it has not undergone an official peer review process. Use at your own risk.

Encrypted output passes almost all tests for randmoness using the Statistical Test Suite developed by the National Institute for Standards and Technology (NIST), and the diehard test suite. See RANDOMNESS_TEST for test results.

A 4352 byte key is used for encryption and decryption, and is highly resilient to brute force attacks. The total number of key permutations is: 256!*3^(64*64) ≈ 1.66e+2461

The adaptive mirror field algorithm implemented in this project is the first of it's kind, though it may have some similar attributes to a block cypher. For more information on how it works, see ADAPTIVE_MIRROR_FIELD.

MrrCrypt in debug mode shows how encryption/decryption occurs:

MrrCrypt's Adaptve Mirror Field

Table of Contents

  1. Quick Examples
  2. Download and Install
  3. Usage
  4. Key Management
  5. License
  6. Tips

Quick Examples

Encrypting/Decrypting a Short String

# Encrypt
$ printf "Attack at Dawn" | mrrcrypt > string.encrypted

# Decrypt
$ cat string.encrypted | mrrcrypt
Attack at Dawn

Encrypting/Decrypting the Contents of a File

# Encrypt
$ cat secret.jpg | mrrcrypt > secret.jpg.encrypted

# Decrypt
$ cat secret.jpg.encrypted | mrrcrypt > secret.jpg

Dual Key Encryption/Decryption

Suppose Bob and John want to encrypt a file so that they each hold a distinct key required for decryption. MrrCrypt can easily accomplish this.

# Encrypt
$ cat secret.txt | mrrcrypt -a -k bobs_key | mrrcrypt -a -k johns_key > secret.txt.encrypted

# Decrypt
$ cat secret.txt.encrypted | mrrcrypt -k johns_key | mrrcrypt -k bobs_key > secret.txt

The -k <name> option specifies a key file to use, and the -a option auto-creates it if it doesn't exist. After performing the first command to create two new keys and encrypt the file, they each copy their respective key files for themselves (see Key Management) and delete the originals. To decrypt, they each copy their key files back to the original location and perform the second command.

Download and Install

In order to download and build this program, you will need to have git, gcc, and make installed. Install them from your package manager if not already installed.

$ which make
/usr/bin/make

$ which gcc
/usr/bin/gcc

$ which git
/usr/bin/git

Download and Build:

$ git clone https://github.com/bartobri/mrrcrypt.git
$ cd mrrcrypt
$ make

Install:

$ sudo make install

Uninstall:

$ sudo make uninstall

Usage

mrrcrypt processes data from stdin and writes the results to stdout. Use I/O redirection for generating input and capturing output.

Basic Encryption

# Encrypt a string
$ echo "This is my secret" | mrrcrypt > secret_string.encrypted

# Encrypt a file
$ cat secret_photo.jpg | mrrcrypt > secret_photo.jpg.encrypted

Basic Decryption

# Decrypt a string
$ cat secret_string.encrypted | mrrcrypt
This is my secret

# Decrypt a file
$ cat secret_photo.jpg.encrypted | mrrcrypt > secret_photo.jpg

Command Line Options

-k key_file

Specify a key to use. An argument is required. The argument can be the name of a key file that exists in the default key directory, or it can be a full path to a key file that exists elsewhere on disk. Note that when this option is not used, mrrcrypt uses the default key. See Key Management for more info.

-a

Auto-create a new key if the one specified by -k key_file does not exist.

-d ms

Debug mode. This draws the mirror field and animates the decryption process for debugging purposes. You will need a minimum terminal size of 132x68. "ms" specifies the time in milliseconds for each step through the mirror field. Values around the mirror field perimeter are shown in hexadecimal. There are a total of 256 values represented in the 64x64 grid, one for every possible arrangement of bits in a single byte.

Key Management

Keys are stored in $HOME/.config/mrrcrypt/

The first time you run mrrcrypt it will automatically generate a unique default key. The default key will be used when no key is specified.

You may wish to share your default key (or any other key) with others so they can decrypt your messages. Keys that are shared by other individuals can be used with the -k key_file option.

Note that "key_file" corresponds to the name of the key file. If John encrypts messages using his "default" key file, and gives a copy to Bob so he can decrypt them, Bob should rename the file to "johns_key" so he does not overwrite his own default key file. Then Bob can then use -k johns_key when decrypting data sent from John.

Keys are stored in Base64 encoded format.

License

This program is free software; you can redistribute it and/or modify it under the terms of the the GNU General Public License. See LICENSE for more details.

Tips

Tips are always appreciated!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].