SkillAgentSearch skills...

Crypter

🔓✨🔒 An innovative, convenient and secure encryption app

Install / Use

/learn @HR/Crypter

README

<h1 align="center"> <br> <a href="https://github.com/HR/Crypter"><img src="./build/icons/256x256.png" alt="Crypter" width="180" style= "margin-bottom: 1rem"></a> <br> Crypter <br> <br> </h1> <h4 align="center">An innovative, convenient and secure crypto app.</h4> <p align="center"> <a href="https://github.com/HR/Crypter/releases/latest"> <img src="https://img.shields.io/badge/Download-4.0-orange.svg" alt="Download latest release" style= "margin-bottom: 0.5rem" height="25px"> </a> </p> <p align="center"> <a href="http://standardjs.com/"> <img src="https://img.shields.io/badge/code%20style-standard-brightgreen.svg" alt="Standard JS Code Style"> </a> <a href="https://travis-ci.org/HR/Crypter"> <img src="https://travis-ci.org/HR/Crypter.svg?branch=master" alt="Travis Build"> </a> <a href="https://ci.appveyor.com/project/HR/crypter"> <img src="https://ci.appveyor.com/api/projects/status/4pa8cnlb1qnyj1xd/branch/master?svg=true" alt="AppVeyor Build"> </a> <a href="https://coveralls.io/github/HR/Crypter?branch=master"> <img src="https://coveralls.io/repos/github/HR/Crypter/badge.svg?branch=master" alt="Test Coverage"> </a> <a href="https://codeclimate.com/github/HR/Crypter?branch=master"> <img src="https://codeclimate.com/github/HR/Crypter/badges/gpa.svg" alt="CodeClimate GPA"> </a> <a href="https://github.com/HR/Crypter/releases/latest"> <img src="https://img.shields.io/github/downloads/hr/crypter/total" alt="GitHub all releases downloads" > </a> </p> <br>

Encrypt unlimited bits. Remember only a bit.

Crypter is a cross-platform crypto app that makes encryption and decryption convenient while still upholding strong security. It tackles one of the weakest links in most security systems today - weak passwords. It simplifies secure password generation and management and requires you to only remember one bit - your MasterPass.

Crypter v4.0 is a crypto app that can decrypt and encrypt any arbitrary data this includes files and folders. This version has been released and fully tested for macOS (OSX), Linux (for all distros via AppImage) and Windows (32 & 64 bit). All core modules (modules that provide the core functionality) are fully tested.

Crypter v5.0 will save your MasterPass in your OS's Keychain so you won't have to enter it every time you open the app. To help speed up the development please send a PR for what's left do https://github.com/HR/Crypter/milestone/4

Please open an issue if you have any suggestions and add improvements via PRs!

Also checkout Ciphora (https://github.com/HR/ciphora) a decentralized end-to-end encrypted messaging app.

Link to this README: https://git.io/Crypter.info


Contents

<!-- TOC depthFrom:2 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->

<!-- /TOC -->

Installation

All prebuilt binaries for all major platforms are available under releases.

Crypter is also on Homebrew Cask for macOS. So to install it, simply run the following command in the Terminal:

$ brew install --cask crypter@4.0.0
<br/>

Screens

<p align="center"> <img src="/.github/Welcome_screen.png?raw=true" alt="Welcome screen" width="100%"> <img src="/.github/Crypter_main_screen.png?raw=true" alt="Crypter screen" width="40%"> <img src="/.github/MasterPass_screen.png?raw=true" alt="MasterPass screen" width="40%"> <img src="/.github/Settings_screen.png?raw=true" alt="Settings screen" width="85%"> </p> <br/>

Crypto

One key to derive them all!

Crypter derives a MasterPassKey from the MasterPass obtained at setup by using the PBKDF2 key derivation algorithm (see below for the specification). It then uses PBKDF2 to derive a number of encryption keys from the MasterPassKey that can be used for the encryption of files. This method allows for the generation of very secure encryption keys for data encryption. Moreover, by publicly storing the credentials used to derive the MasterPassKey and the salts used to derive the encryption keys, you are able to produce the encryption keys at will and without needing to store them securely. Your MasterPass is the only thing that you need to remember.

Crypter never directly encrypts anything with your MasterPass. Instead, it derives a MasterPassKey from it, which it then uses to derive the encryption key used to encrypt your file. Every time a file is decrypted, the encryption key is re-derived from the MasterPassKey. Every time you set the MasterPass through the setup or reset it through Verify MasterPass, the MasterPassKey is derived from the MasterPass using a newly generated set of (random) credentials. These credentials are used to re-derive the MasterPassKey every time that Crypter is executed (i.e. the app is launched).

Authentication with the AES-256-GCM symmetric block cipher is used by default. This ensures that data integrity is verified on decryption and allows the app to detect tampering or data corruption.

The following are the crypto defaults and can be found under app/config.js:

// Crypto defaults
{
  ITERATIONS: 50000, // file encryption key derivation iterations
  KEYLENGTH: 32, // encryption key length
  IVLENGTH: 12, // initialisation vector length
  ALGORITHM: 'aes-256-gcm', // encryption algorithm
  DIGEST: 'sha256', // digest function
  HASH_ALG: 'sha256', // hashing function
  MPK_ITERATIONS: 100000 // MasterPassKey derivation iterations
}

Encryption process

When encrypting a file, Crypter first creates a temporary hidden directory, namely '.crypting'. It then encrypts the user-selected file with the crypto defaults and flushes the encrypted data to a file in the directory, namely 'data'. If it is a directory then it is compressed first (tar). It also writes the public credentials to a file within the same directory, namely 'creds'. Finally, Crypter compresses the directory to a tar archive with the name of the user-selected file and the '.crypto' extension appended to it.

Decryption process

The decryption process is essentially the inverse of the encryption process. During decryption, Crypter creates a temporary hidden directory named '.decrypting'. It then reads the credentials from the creds file and decrypts the data file into the original file or directory (after decompressing it) with its original name and extension, as deduced from the CRYPTO file name (e.g. the extension for "file.txt.crypto" would be ".txt").

Public credentials

Certain credentials are required to decrypt the encrypted data. These are needed to reconstruct the particular encryption key and to verify data integrity. These can be stored publicly without compromising security since it is fairly impossible (by current standards) to reconstruct the encryption key without the MasterPass and its credentials. These credentials are stored in the creds file of the CRYPTO file archive (as delineated above) in the following format:

v1

Crypter#iv#authTag#salt#dir

v2

Uses JSON

{
  "type": "CRYPTO",
  "iv": "...",
  "authTag": "...",
  "salt": "...",
  "isDir": true || false
}

The dir part is only included for directories <br/>

CRYPTO file

Format

A CRYPTO file is the product of the Crypter encryption process. This file stores both the encrypted version of the user file and the public credentials needed to encrypt and decrypt it. It has a .crypto file extension, which is appended to the full file name (including the extension) of

View on GitHub
GitHub Stars464
CategoryDevelopment
Updated6d ago
Forks75

Languages

JavaScript

Security Score

100/100

Audited on Mar 24, 2026

No findings