]> Cypherpunks.ru repositories - gohpenc.git/blob - README
More secure and faster version
[gohpenc.git] / README
1 Go high-performance encryption utility.
2
3 gohpenc highly resembles hpenc tool (https://github.com/vstakhov/hpenc).
4 hpenc solves the problem that there is no simple tool to quickly
5 transfer data with encryption and authentication:
6
7 * openssl enc -- non-parallelized, no authentication
8 * GnuPG -- non-parallelized, complex key generation/management
9 * age -- non-parallelized
10 * OpenSSH -- non-parallelized, not very fast
11
12 Why gohpenc was written? hpenc has some problems: it does not work on
13 aarch64 and sparc64 architectures under FreeBSD (as seen in the port's
14 Makefile) and produces incompatible output (unauthenticated after 8192
15 blocks) between FreeBSD and HardenedBSD systems somehow. Instead of
16 painful debugging I decided to write something similar on the Go
17 language, widening supported platforms. But with loose of compatibility
18 with hpenc.
19
20 Also hpenc won't fail if transmission was truncated (in valid block
21 bounds).
22
23 It uses ChaCha20-Poly1305, parallelized AEAD encryption of blocks.
24
25     $ key=`gohpenc -psk`
26     $ echo "message to be transmitted" | gohpenc -k $key > encrypted
27     $ gohpenc -d -k $key < encrypted
28
29 Blocksize can be specified with -b option (in KiBs). By default it uses
30 1MiB blocks. By default all CPUs are used, that can be overriden with -c
31 option. If you have got 8 CPUs, then you require (8+1)*1MiB=9MiB of
32 memory for buffers allocation.
33
34 There is random number generation mode (-r option), that just generates
35 random key and encrypt dummy data in the buffers.
36
37 gohpenc is free software: see the file COPYING for copying conditions.