> For the complete documentation index, see [llms.txt](https://til.yulrizka.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://til.yulrizka.com/unix/encryption-with-gpg.md).

# encryption with gpg

### Generate key

```bash
$ gpg --gen-key
```

### List keys

```bash
$ gpg --list-keys
```

### Encrypt Data

With a passprhare

```bash
$ gpg -ca -o output.txt.gpg input.txt
```

with a certificate and from STDOUT

```bash
$ gpg -ea
```

or if you know the name already (can be key, name or email)

```bash
$ gpg -ea -r "Ahmy"
```

### Decrypt Data

```bash
$ gpg -d file.txt.gpg
```

### Export

Public key

```bash
$ gpg --export -a "name" > public.key
```

`-a` is to create armored ascii output.

Private Key

```bash
$ gpg --export-secret-key -a "name" > private.key
```

### Import

Public key

```bash
$ gpg --export-secret-key -a "name" > private.key
```

Private Key

```bash
$ gpg --allow-secret-key-import --import private.key
```

### Deleting

Public Key

```bash
$ gpg --delete-key "Real Name"
```

Private Key

```bash
$ gpg --delete-secret-key "Real Name"
```

### Extend the expiration

```
gpg --edit-key "name"
```

Select the key to extend <br>

```
gpg> key 1
gpg> expire
```

### Send key to a key server

```
gpg --keyserver keyserver.ubuntu.com --send-key "name"
```
