A simple and open source temporary text storage. With the use of AES encryption, text stored on the server is only accessable with the correct hash and or password. The public webapp allows url hash sizes from 4-32 characters, which can be changed to be smaller or larger when locally hosted. All sensitive text is stored either as a hash or an encrypted string.
// Variables are all caps
// Variables surrounded by brackets indicate new variables equal to their adjacent function
// Variables with a questionmark are optional
[TEXT] - getText()
// Url Generation
[Client] (payload: STRLENGTH) -> Server
[Server] Generates a new random url [URL] - randomStr(STRLENGTH)
[Server] URL is hashed then stored in a temp database
[Server] (payload: URL) -> Client
// Encryption
[Client] Uses AES to encrypt text and uses URL as the key [ENCTEXT] - aes(TEXT, RNDSTR+PASSWORD?)
[Client] URL is hashed [HASHURL] - HASH(URL)
[Client] (payload: ENCTEXT, STRLENGTH, HASHURL, ...) -> Server
[Server] Validates that HASHURL is in temp database
[Server] Sql command get executed to store data - SQL(ENCTEXT, HASH, ...)
[Client] Combines URL with the url to direct the users to the stored text - https://cryptn.it/URL
- docker
- git
git clone https://github.com/dahvde/cryptn.it
cd cryptn.it
docker-compose up -d
cd cryptn.it
docker-compose down --rmi all --volumes --remove-orphans
To run the application locally with HTTPS, you can use one of these methods:
-
Using a Local SSL Certificate
mkcert -install mkcert localhost
-
Using a Reverse Proxy (e.g., Caddy)
# Caddyfile localhost { reverse_proxy localhost:{PORT} } -
Using Local SSL Proxy
npm install -g local-ssl-proxy local-ssl-proxy --source {APPLICATION_PORT} --target {FORWARD_PORT}
- End-to-End Encryption
- Text Viewing Interface
- Syntax Highlighting
- Public Sharing
- File Uploads (mp3, jpg, ...)
- Tags