Jump to content

Age Encryption

From Torben's Wickie

Generate Key Pair

age-keygen -pq -o ~/age-260801.key
# chmod 600 age-260801.key already included
age-keygen -y ~/age-260801.key > ~/age-260801.pub

Encrypt

# tar.gz
tar czf - mydir | age -R ~/age-260801.pub -o mydir.tar.gz.age-260801
# tar.xz
tar cf - mydir | xz -6 | age -R ~/age-260801.pub -o mydir.tar.xz.age-260801
# or raise to -9 or even -9e if size matters more than time

Encrypt with filtered file list

FILELIST=$(mktemp)
trap 'rm -f "$FILELIST"' EXIT

find . \
  \( -path "./asdf" \
  -o -path "*/.git" \
  -o -path "*/node_modules" \
  \) -prune -o \
  -type f \
  ! -name ".DS_Store" \
  ! -name "*.pyc" \
  ! -name "pnpm-lock.yaml" \
  -print >"$FILELIST"

tar -cf - -T "$FILELIST" | xz -6 | age -R ~/age-260801.pub -o mydir.tar.xz.age-260801

Decrypt

# tar.gz
age -d -i ~/age-260801.key mydir.tar.gz.age-260801 | tar xzf -
# tar.xz
age -d -i ~/age-260801.key mydir.tar.xz.age-260801 | xz -d | tar xf -

Shell Functions for reuse

age_pack()   { tar cf - "$1" | xz -6 | age -R ~/age-260801.pub -o "${1%/}.tar.xz.age-260801"; }
age_unpack() { age -d -i ~/age-260801.key "$1" | xz -d | tar xf -; }