
एक सरल, आधुनिक और सुरक्षित एन्क्रिप्शन टूल (और Go लाइब्रेरी) जिसमें छोटी स्पष्ट कुंजियाँ, कोई कॉन्फ़िग विकल्प नहीं, और UNIX-शैली की संयोजनीयता है।
age एक सरल, आधुनिक और सुरक्षित फ़ाइल एन्क्रिप्शन टूल, प्रारूप और Go लाइब्रेरी है।
इसमें छोटी स्पष्ट कुंजियाँ, पोस्ट-क्वांटम समर्थन, कोई कॉन्फ़िगरेशन विकल्प नहीं, और UNIX-शैली की संयोजनीयता (composability) शामिल है।
$ age-keygen -o key.txt
Public key: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
$ tar cvz ~/data | age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p > data.tar.gz.age
$ age --decrypt -i key.txt data.tar.gz.age > data.tar.gz
📜 प्रारूप विनिर्देशन age-encryption.org/v1 पर उपलब्ध है। age को @benjojo और @FiloSottile द्वारा डिज़ाइन किया गया था।
🦀 एक वैकल्पिक अंतर-संचालनीय (interoperable) Rust कार्यान्वयन github.com/str4d/rage पर उपलब्ध है।
🌍 Typage एक TypeScript कार्यान्वयन है। यह ब्राउज़र, Node.js, Deno और Bun में काम करता है।
🔑 YubiKeys जैसे हार्डवेयर PIV टोकन age-plugin-yubikey प्लगइन के माध्यम से समर्थित हैं।
✨ अधिक प्लगइन्स, कार्यान्वयन, टूल और एकीकरण के लिए, awesome age सूची देखें।
💬 लेखक इसे [aɡe̞] कठोर g के साथ उच्चारित करते हैं, जैसे GIF, और यह हमेशा लोअरकेस में लिखा जाता है।
Windows, Linux, macOS और FreeBSD पर आप पहले से निर्मित (pre-built) बाइनरी का उपयोग कर सकते हैं।
यदि आप पहले से निर्मित बाइनरी डाउनलोड करते हैं, तो आप उनके Sigsum प्रमाण की जाँच कर सकते हैं।
यदि आपके सिस्टम में Go का समर्थित संस्करण है, तो आप स्रोत से निर्माण कर सकते हैं।
go install filippo.io/age/cmd/...@latest
नए पैकेजर्स से सहायता का स्वागत है।
पूर्ण दस्तावेज़ीकरण के लिए, age(1) man पेज पढ़ें।
Usage:
age [--encrypt] (-r RECIPIENT | -R PATH)... [--armor] [-o OUTPUT] [INPUT]
age [--encrypt] --passphrase [--armor] [-o OUTPUT] [INPUT]
age --decrypt [-i PATH]... [-o OUTPUT] [INPUT]
Options:
-e, --encrypt इनपुट को आउटपुट में एन्क्रिप्ट करें। यदि छोड़ा जाए तो डिफ़ॉल्ट।
-d, --decrypt इनपुट को आउटपुट में डिक्रिप्ट करें।
-o, --output OUTPUT परिणाम को PATH OUTPUT पर फ़ाइल में लिखें।
-a, --armor PEM एन्कोडेड प्रारूप में एन्क्रिप्ट करें।
-p, --passphrase पासफ़्रेज़ के साथ एन्क्रिप्ट करें।
-r, --recipient RECIPIENT निर्दिष्ट RECIPIENT को एन्क्रिप्ट करें। दोहराया जा सकता है।
-R, --recipients-file PATH PATH पर सूचीबद्ध प्राप्तकर्ताओं को एन्क्रिप्ट करें। दोहराया जा सकता है।
-i, --identity PATH PATH पर पहचान फ़ाइल का उपयोग करें। दोहराया जा सकता है।
--version संस्करण प्रिंट करें।
INPUT डिफ़ॉल्ट रूप से मानक इनपुट है, और OUTPUT डिफ़ॉल्ट रूप से मानक आउटपुट है।
यदि OUTPUT मौजूद है, तो इसे अधिलेखित (overwrite) कर दिया जाएगा।
RECIPIENT age-keygen द्वारा उत्पन्न age सार्वजनिक कुंजी ("age1...")
या SSH सार्वजनिक कुंजी ("ssh-ed25519 AAAA...", "ssh-rsa AAAA...") हो सकता है।
प्राप्तकर्ता फ़ाइलों में एक या अधिक प्राप्तकर्ता होते हैं, प्रति पंक्ति एक। खाली पंक्तियाँ
और "#" से शुरू होने वाली पंक्तियाँ टिप्पणियों के रूप में अनदेखी की जाती हैं। "-" का उपयोग
मानक इनपुट से प्राप्तकर्ताओं को पढ़ने के लिए किया जा सकता है।
पहचान फ़ाइलों में एक या अधिक गुप्त कुंजियाँ ("AGE-SECRET-KEY-1...") होती हैं,
प्रति पंक्ति एक, या एक SSH कुंजी। खाली पंक्तियाँ और "#" से शुरू होने वाली पंक्तियाँ
टिप्पणियों के रूप में अनदेखी की जाती हैं। पासफ़्रेज़-एन्क्रिप्टेड age फ़ाइलों का उपयोग
पहचान फ़ाइलों के रूप में किया जा सकता है। कई कुंजी फ़ाइलें प्रदान की जा सकती हैं, और कोई भी अप्रयुक्त
अनदेखी की जाएगी। "-" का उपयोग मानक इनपुट से पहचान पढ़ने के लिए किया जा सकता है।
जब --encrypt स्पष्ट रूप से निर्दिष्ट किया जाता है, तो -i का उपयोग सामान्य प्राप्तकर्ताओं के
बजाय या उनके अतिरिक्त, एक पहचान फ़ाइल में सममित रूप से एन्क्रिप्ट करने के लिए भी किया जा सकता है।
फ़ाइलों को -r/--recipient दोहराकर एकाधिक प्राप्तकर्ताओं को एन्क्रिप्ट किया जा सकता है। प्रत्येक प्राप्तकर्ता फ़ाइल को डिक्रिप्ट करने में सक्षम होगा।
$ age -o example.jpg.age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p \
-r age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg example.jpg
एकाधिक प्राप्तकर्ताओं को -R/--recipients-file फ़्लैग के साथ पारित एक या अधिक फ़ाइलों में प्रति पंक्ति एक सूचीबद्ध किया जा सकता है।
$ cat recipients.txt
# Alice
age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
# Bob
age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg
$ age -R recipients.txt example.jpg > example.jpg.age
यदि -R (या -i) का तर्क - है, तो फ़ाइल मानक इनपुट से पढ़ी जाती है।
भविष्य के क्वांटम कंप्यूटर हमलों के विरुद्ध सुरक्षित हाइब्रिड पोस्ट-क्वांटम कुंजियाँ उत्पन्न करने के लिए,
age-keygen के साथ -pq फ़्लैग का उपयोग करें। यह भविष्य में डिफ़ॉल्ट बन सकता है।
पोस्ट-क्वांटम पहचान AGE-SECRET-KEY-PQ-1... से शुरू होती हैं और प्राप्तकर्ता
age1pq1... से शुरू होते हैं। प्राप्तकर्ता दुर्भाग्य से ~2000 वर्ण लंबे होते हैं।
$ age-keygen -pq -o key.txt
$ age-keygen -y key.txt > recipient.txt
$ age -R recipient.txt example.jpg > example.jpg.age
$ age -d -i key.txt example.jpg.age > example.jpg
पोस्ट-क्वांटम कुंजियों के लिए समर्थन age v1.3.0 और बाद के संस्करणों में निर्मित है। वैकल्पिक रूप से,
age-plugin-pq बाइनरी स्थापित की जा सकती है और प्लगइन्स का समर्थन करने वाले age के किसी भी संस्करण
और कार्यान्वयन में समर्थन जोड़ने के लिए $PATH में रखी जा सकती है। प्राप्तकर्ता
बॉक्स से बाहर काम करेंगे, जबकि पहचान को age-plugin-pq -identity के साथ प्लगइन
पहचान में परिवर्तित करना होगा।
फ़ाइलों को -p/--passphrase का उपयोग करके पासफ़्रेज़ के साथ एन्क्रिप्ट किया जा सकता है। डिफ़ॉल्ट रूप से age स्वचालित रूप से एक सुरक्षित पासफ़्रेज़ उत्पन्न करेगा। पासफ़्रेज़-संरक्षित फ़ाइलें डिक्रिप्ट समय पर स्वचालित रूप से पहचानी जाती हैं।
$ age -p secrets.txt > secrets.txt.age
Enter passphrase (leave empty to autogenerate a secure one):
Using the autogenerated passphrase "release-response-step-brand-wrap-ankle-pair-unusual-sword-train".
$ age -d secrets.txt.age > secrets.txt
Enter passphrase:
यदि -i को पारित पहचान फ़ाइल एक पासफ़्रेज़-एन्क्रिप्टेड age फ़ाइल है, तो यह स्वचालित रूप से डिक्रिप्ट हो जाएगी।
$ age-keygen | age -p > key.age
Public key: age1yhm4gctwfmrpz87tdslm550wrx6m79y9f2hdzt0lndjnehwj0ukqrjpyx5
Enter passphrase (leave empty to autogenerate a secure one):
Using the autogenerated passphrase "hip-roast-boring-snake-mention-east-wasp-honey-input-actress".
$ age -r age1yhm4gctwfmrpz87tdslm550wrx6m79y9f2hdzt0lndjnehwj0ukqrjpyx5 secrets.txt > secrets.txt.age
$ age -d -i key.age secrets.txt.age > secrets.txt
Enter passphrase for identity file "key.age":
पासफ़्रेज़-संरक्षित पहचान फ़ाइलें अधिकांश उपयोग मामलों के लिए आवश्यक नहीं हैं, जहाँ एन्क्रिप्टेड पहचान फ़ाइल तक पहुँच पूरे सिस्टम तक पहुँच का तात्पर्य है। हालाँकि, वे उपयोगी हो सकती हैं यदि पहचान फ़ाइल दूरस्थ रूप से संग्रहीत है।
सुविधा सुविधा के रूप में, age ssh-rsa और ssh-ed25519 SSH सार्वजनिक कुंजियों में एन्क्रिप्ट करने और संबंधित निजी कुंजी फ़ाइल के साथ डिक्रिप्ट करने का भी समर्थन करता है। (ssh-agent समर्थित नहीं है।)
$ age -R ~/.ssh/id_ed25519.pub example.jpg > example.jpg.age
$ age -d -i ~/.ssh/id_ed25519 example.jpg.age > example.jpg
ध्यान दें कि SSH कुंजी समर्थन अधिक जटिल क्रिप्टोग्राफी का उपयोग करता है, और एन्क्रिप्टेड फ़ाइल में एक सार्वजनिक कुंजी टैग एम्बेड करता है, जिससे किसी विशिष्ट सार्वजनिक कुंजी में एन्क्रिप्ट की गई फ़ाइलों को ट्रैक करना संभव हो जाता है।
SSH कुंजी समर्थन और -R को मिलाकर, आप GitHub प्रोफ़ाइल पर सूचीबद्ध SSH कुंजियों में आसानी से एक फ़ाइल एन्क्रिप्ट कर सकते हैं।
$ curl https://github.com/benjojo.keys | age -R - example.jpg > example.jpg.age
ध्यान रखें कि लोग SSH कुंजियों को दीर्घकालिक रूप से सुरक्षित नहीं रख सकते हैं, क्योंकि केवल प्रमाणीकरण के लिए उपयोग किए जाने पर वे रद्द करने योग्य होती हैं, और YubiKeys पर रखी SSH कुंजियों का उपयोग फ़ाइलों को डिक्रिप्ट करने के लिए नहीं किया जा सकता है।
age-inspect कमांड एन्क्रिप्टेड फ़ाइल के बारे में मेटाडेटा प्रदर्शित कर सकता है, बिना इसे डिक्रिप्ट किए, जिसमें प्राप्तकर्ता प्रकार, क्या यह पोस्ट-क्वांटम एन्क्रिप्शन का उपयोग करता है, और पेलोड आकार शामिल है।
$ age-inspect secrets.age
secrets.age is an age file, version "age-encryption.org/v1".
This file is encrypted to the following recipient types:
- "mlkem768x25519"
This file uses post-quantum encryption.
Size breakdown (assuming it decrypts successfully):
Header 1627 bytes
Encryption overhead 32 bytes
Payload 42 bytes
-------------------
Total 1701 bytes
Tip: for machine-readable output, use --json.
| Homebrew (macOS या Linux) |
brew install age
|
| MacPorts |
port install age
|
| Windows |
winget install --id FiloSottile.age
|
| Alpine Linux v3.15+ |
apk add age
|
| Arch Linux |
pacman -S age
|
| Debian 12+ (Bookworm) |
apt install age
|
| Debian 11 (Bullseye) |
apt install age/bullseye-backports
(enable backports age v1.0.0+ के लिए)
|
| Fedora 33+ |
dnf install age
|
| Gentoo Linux |
emerge app-crypt/age
|
| Guix System |
guix package -i age
|
| NixOS / Nix |
nix-env -i age
|
| openSUSE Tumbleweed |
zypper install age
|
| Ubuntu 22.04+ |
apt install age
|
| Void Linux |
xbps-install age
|
| FreeBSD |
pkg install age (security/age)
|
| OpenBSD 6.7+ |
pkg_add age (security/age)
|
| Chocolatey (Windows) |
choco install age.portable
|
| Scoop (Windows) |
scoop bucket add extras && scoop install age
|