Cryptography Library — اردو/رمز
The اردو/رمز library provides hashing, symmetric encryption (Fernet and AES-256-GCM), and asymmetric encryption (RSA) — all with Urdu-named methods.
اردو:
اردو/رمزلائبریری ہیش (hash)، یکطرفہ خفیہ کاری (Fernet / AES-256-GCM)، اور دو کلیدی خفیہ کاری (RSA) اردو ناموں کے ساتھ فراہم کرتی ہے۔
Import:
Backend: Python hashlib, hmac, cryptography package.
Table of Contents — فہرست مضامین
Hashing — ہیش
All methods are static — call directly on the class without نیا.
اردو: ہیش (hash) ڈیٹا کا ایک یک طرفہ خلاصہ ہے۔ تمام طریقے جامد (static) ہیں —
نیاکے بغیر کلاس پر براہ راست کال کریں۔
| Method | Urdu alias | Returns | Description |
|---|---|---|---|
ہیش.sha256(ڈیٹا) |
ہیش.ہیش_256(ڈیٹا) |
hex string | SHA-256 hash |
ہیش.sha512(ڈیٹا) |
ہیش.ہیش_512(ڈیٹا) |
hex string | SHA-512 hash |
ہیش.md5(ڈیٹا) |
ہیش.ایم_ڈی_5(ڈیٹا) |
hex string | MD5 hash (not for security) |
ہیش.blake2b(ڈیٹا, digest_size=32) |
ہیش.بلیک_2بی(ڈیٹا) |
hex string | BLAKE2b hash |
ہیش.hmac(ڈیٹا, کلید, الگورتھم="sha256") |
ہیش.ہمیک(ڈیٹا, کلید) |
hex string | HMAC authentication code |
ہیش.pbkdf2(پاسورڈ, نمک, دور=100000, طول=32) |
ہیش.کلید_استخراج(پاسورڈ, نمک) |
hex string | PBKDF2 key derivation |
Input: ڈیٹا can be a string or bytes. Strings are encoded as UTF-8 automatically.
Hashing examples — ہیش کی مثالیں
درآمد { ہیش } سے "اردو/رمز"
// SHA-256
متغیر h = ہیش.sha256("السلام علیکم")
لکھو("SHA-256:", h)
// SHA-512 (Urdu alias)
متغیر h512 = ہیش.ہیش_512("اردو پروگرامنگ")
لکھو("SHA-512:", h512)
// MD5 — صرف checksums کے لیے، پاسورڈ کے لیے نہیں
متغیر md5 = ہیش.md5("test")
لکھو("MD5:", md5)
// BLAKE2b — تیز اور محفوظ
متغیر b2 = ہیش.بلیک_2بی("میرا ڈیٹا")
لکھو("BLAKE2b:", b2)
// HMAC — پیغام کی صداقت جانچنا
متغیر سر = ہیش.ہمیک("پیغام متن", "خفیہ_کلید")
لکھو("HMAC:", سر)
// PBKDF2 — پاسورڈ سے کلید بنانا
متغیر نمک = "تصادفی_نمک_123"
متغیر کلید = ہیش.کلید_استخراج("میرا_پاسورڈ", نمک)
لکھو("PBKDF2:", کلید)
Symmetric Encryption — متناسق (Fernet)
Fernet guarantees that a message encrypted with a given key cannot be manipulated or read without that key. Uses AES-128-CBC + HMAC-SHA256.
اردو: متناسق (symmetric) خفیہ کاری میں ایک ہی کلید سے ڈیٹا خفیہ کرنا (encrypt) اور ظاہر کرنا (decrypt) ممکن ہے۔ Fernet، AES-128-CBC اور HMAC-SHA256 استعمال کرتا ہے۔
- Pass
خالیto auto-generate a new key. - Pass an existing key string to reuse it.
| Method / Property | Returns | Description |
|---|---|---|
متناسق.نئی_کلید() |
string | Static. Generate a new Fernet key |
enc.کلید |
string | The current encryption key |
enc.خفیہ_کریں(پیغام) |
string | Encrypt a plaintext string → ciphertext |
enc.ظاہر_کریں(خفیہ) |
string | Decrypt ciphertext → plaintext |
Example — Fernet encryption
اردو: مثال — Fernet سے پیغام خفیہ کرنا اور ظاہر کرنا
درآمد { متناسق } سے "اردو/رمز"
// نئی کلید بنائیں
متغیر کلید = متناسق.نئی_کلید()
لکھو("کلید:", کلید)
متغیر enc = نیا متناسق(کلید)
متغیر اصل_پیغام = "یہ خفیہ پیغام ہے — صرف آپ کے لیے"
متغیر خفیہ = enc.خفیہ_کریں(اصل_پیغام)
لکھو("خفیہ:", خفیہ)
متغیر واضح = enc.ظاہر_کریں(خفیہ)
لکھو("واضح:", واضح)
// تصدیق
لکھو("مماثل:", واضح == اصل_پیغام)
AES-256-GCM — AES
AES-256 in GCM (Galois/Counter Mode) provides authenticated encryption with optional additional data (AAD).
اردو: AES-256-GCM توثیق شدہ خفیہ کاری فراہم کرتا ہے۔ یہ ڈیٹا خفیہ کرنے کے ساتھ سالمیت بھی جانچتا ہے۔
Pass خالی to auto-generate a 256-bit key.
| Method / Property | Returns | Description |
|---|---|---|
aes.کلید |
string | The AES key (hex or base64) |
aes.خفیہ_کریں(پیغام, اضافی=null) |
string | Encrypt; optionally bind additional data |
aes.ظاہر_کریں(خفیہ) |
string | Decrypt and authenticate |
درآمد { AES } سے "اردو/رمز"
متغیر aes = نیا AES(خالی) // نئی کلید خودکار بنائیں
لکھو("AES کلید:", aes.کلید)
متغیر خفیہ = aes.خفیہ_کریں("حساس ڈیٹا: اکاؤنٹ نمبر 12345")
لکھو("خفیہ:", خفیہ)
متغیر واضح = aes.ظاہر_کریں(خفیہ)
لکھو("واضح:", واضح)
// کلید دوبارہ استعمال
متغیر aes2 = نیا AES(aes.کلید)
لکھو("دوبارہ خفیہ:", aes2.ظاہر_کریں(خفیہ))
RSA — غیر_متناسق
Asymmetric (public-key) encryption and digital signatures using RSA.
اردو: غیر متناسق (asymmetric) خفیہ کاری میں دو کلیدیں ہوتی ہیں — عوامی کلید سے خفیہ کریں (encrypt) اور نجی کلید سے ظاہر کریں (decrypt)۔ RSA دستخط (digital signature) کے لیے بھی استعمال ہوتا ہے۔
Default key size is 2048 bits. Use 4096 for extra security.
| Property / Method | Returns | Description |
|---|---|---|
rsa.عوامی_کلید |
string | PEM-encoded public key |
rsa.نجی_کلید |
string | PEM-encoded private key |
rsa.خفیہ_کریں(پیغام) |
string | Encrypt with public key |
rsa.ظاہر_کریں(خفیہ) |
string | Decrypt with private key |
rsa.دستخط(ڈیٹا) |
string | Sign data with private key |
rsa.تصدیق(ڈیٹا, دستخط) |
bool | Verify signature with public key |
درآمد { غیر_متناسق } سے "اردو/رمز"
// نئی RSA کلیدیں بنائیں
متغیر rsa = نیا غیر_متناسق(2048)
لکھو("عوامی کلید:\n", rsa.عوامی_کلید)
// خفیہ کاری
متغیر خفیہ = rsa.خفیہ_کریں("یہ خفیہ پیغام ہے")
لکھو("\nخفیہ:", خفیہ.substring(0, 60) + "...")
متغیر واضح = rsa.ظاہر_کریں(خفیہ)
لکھو("واضح:", واضح)
// دستخط اور تصدیق
متغیر ڈیٹا = "یہ اہم دستاویز ہے"
متغیر دستخط = rsa.دستخط(ڈیٹا)
لکھو("\nدستخط:", دستخط.substring(0, 60) + "...")
متغیر درست = rsa.تصدیق(ڈیٹا, دستخط)
لکھو("تصدیق:", درست) // سچ
Examples — مثالیں
Example 1 — Password storage with PBKDF2
اردو: مثال ۱ — PBKDF2 سے پاسورڈ محفوظ طریقے سے ذخیرہ کرنا
درآمد { ہیش } سے "اردو/رمز"
// ═══════════════════════════════════════
// محفوظ پاسورڈ ذخیرہ کاری
// ═══════════════════════════════════════
فنکشن پاسورڈ_محفوظ_کریں(پاسورڈ) {
متغیر نمک = "rand_" + Date.now().toString();
متغیر ہیش_قدر = ہیش.کلید_استخراج(پاسورڈ, نمک, دور=200000);
واپس { نمک, ہیش: ہیش_قدر };
}
فنکشن پاسورڈ_جانچیں(درج_شدہ_پاسورڈ, محفوظ) {
متغیر جانچ_ہیش = ہیش.کلید_استخراج(
درج_شدہ_پاسورڈ,
محفوظ.نمک,
دور=200000
);
واپس جانچ_ہیش == محفوظ.ہیش;
}
// استعمال
متغیر محفوظ_پاسورڈ = پاسورڈ_محفوظ_کریں("MyP@ssw0rd!")
لکھو("محفوظ ہیش:", محفوظ_پاسورڈ.ہیش)
لکھو("درست پاسورڈ:", پاسورڈ_جانچیں("MyP@ssw0rd!", محفوظ_پاسورڈ)) // سچ
لکھو("غلط پاسورڈ:", پاسورڈ_جانچیں("wrongpassword", محفوظ_پاسورڈ)) // جھوٹ
Example 2 — File integrity check
اردو: مثال ۲ — SHA-256 ہیش سے فائل (file) کی سالمیت جانچنا
درآمد { ہیش } سے "اردو/رمز"
درآمد { فائل_پڑھو } سے "اردو/نظام_فائل"
فنکشن فائل_ہیش(راستہ) {
متغیر مواد = فائل_پڑھو(راستہ, "bytes");
واپس ہیش.sha256(مواد);
}
فنکشن سالمیت_جانچیں(راستہ, متوقع_ہیش) {
متغیر اصل_ہیش = فائل_ہیش(راستہ);
اگر (اصل_ہیش == متوقع_ہیش) {
لکھو("✓ فائل سالم ہے:", راستہ);
واپس سچ;
} ورنہ {
لکھو("✗ فائل تبدیل ہو گئی ہے!", راستہ);
واپس جھوٹ;
}
}
// ڈاؤن لوڈ کے بعد تصدیق
متغیر متوقع = "a3f5b9c2d8e1f4a7b0c3d6e9f2a5b8c1d4e7f0a3b6c9d2e5f8a1b4c7d0e3f6a9"
سالمیت_جانچیں("ڈاؤن لوڈ.zip", متوقع)
Example 3 — Encrypted configuration file
اردو: مثال ۳ — Fernet سے ترتیب فائل (config file) خفیہ کرنا اور ظاہر کرنا
درآمد { متناسق } سے "اردو/رمز"
درآمد { فائل_پڑھو, فائل_لکھو } سے "اردو/نظام_فائل"
// ═══════════════════════════════════════
// خفیہ config فائل — لکھنا اور پڑھنا
// ═══════════════════════════════════════
مستقل کلید_فائل = "encryption.key"
مستقل config_فائل = "config.enc"
فنکشن config_محفوظ_کریں(config_ڈکشنری) {
متغیر کلید;
کوشش {
کلید = فائل_پڑھو(کلید_فائل);
} پکڑو (غ) {
کلید = متناسق.نئی_کلید();
فائل_لکھو(کلید_فائل, کلید);
لکھو("نئی کلید بنائی:", کلید_فائل);
}
متغیر enc = نیا متناسق(کلید);
متغیر json_متن = JSON.stringify(config_ڈکشنری, خالی, 2);
متغیر خفیہ = enc.خفیہ_کریں(json_متن);
فائل_لکھو(config_فائل, خفیہ);
لکھو("config محفوظ:", config_فائل);
}
فنکشن config_لوڈ_کریں() {
متغیر کلید = فائل_پڑھو(کلید_فائل);
متغیر enc = نیا متناسق(کلید);
متغیر خفیہ = فائل_پڑھو(config_فائل);
متغیر json_متن = enc.ظاہر_کریں(خفیہ);
واپس JSON.parse(json_متن);
}
// استعمال
config_محفوظ_کریں({
db_host: "localhost",
db_password: "S3cr3tP@ss!",
api_key: "sk-abc123xyz",
admin_pin: "9876"
})
متغیر config = config_لوڈ_کریں()
لکھو("DB:", config.db_host)
لکھو("API کلید:", config.api_key)
Example 4 — JWT-like signed token
اردو: مثال ۴ — HMAC-SHA256 دستخط شدہ ٹوکن بنانا اور جانچنا
درآمد { ہیش } سے "اردو/رمز"
// ═══════════════════════════════════════
// HMAC-SHA256 دستخط شدہ ٹوکن
// ═══════════════════════════════════════
مستقل خفیہ_کلید = "super-secret-key-do-not-share"
فنکشن ٹوکن_بنائیں(صارف_ڈیٹا) {
متغیر payload = JSON.stringify({
ڈیٹا: صارف_ڈیٹا,
وقت: Date.now(),
میعاد: Date.now() + (60 * 60 * 1000) // 1 گھنٹہ
});
متغیر payload_b64 = btoa(payload);
متغیر دستخط = ہیش.ہمیک(payload_b64, خفیہ_کلید);
واپس `${payload_b64}.${دستخط}`;
}
فنکشن ٹوکن_جانچیں(ٹوکن) {
کوشش {
متغیر [payload_b64, ملا_دستخط] = ٹوکن.split(".");
متغیر متوقع_دستخط = ہیش.ہمیک(payload_b64, خفیہ_کلید);
اگر (ملا_دستخط != متوقع_دستخط) {
واپس { درست: جھوٹ, غلطی: "دستخط غلط" };
}
متغیر payload = JSON.parse(atob(payload_b64));
اگر (Date.now() > payload.میعاد) {
واپس { درست: جھوٹ, غلطی: "ٹوکن میعاد ختم" };
}
واپس { درست: سچ, ڈیٹا: payload.ڈیٹا };
} پکڑو (ے) {
واپس { درست: جھوٹ, غلطی: ے.message };
}
}
// استعمال
متغیر ٹوکن = ٹوکن_بنائیں({ id: 42, نام: "احمد", کردار: "admin" })
لکھو("ٹوکن:", ٹوکن.substring(0, 60) + "...")
متغیر نتیجہ = ٹوکن_جانچیں(ٹوکن)
لکھو("درست:", نتیجہ.درست)
لکھو("صارف:", نتیجہ.ڈیٹا.نام)
// تبدیل شدہ ٹوکن جانچیں
متغیر نتیجہ2 = ٹوکن_جانچیں(ٹوکن + "tampered")
لکھو("تبدیل شدہ ٹوکن:", نتیجہ2.غلطی)
Example 5 — RSA key exchange for secure channel
اردو: مثال ۵ — RSA اور Fernet ملا کر محفوظ مواصلاتی چینل بنانا۔ RSA سے Fernet کلید خفیہ کریں (encrypt) اور Fernet سے ڈیٹا خفیہ کریں۔
درآمد { غیر_متناسق, متناسق } سے "اردو/رمز"
// ═══════════════════════════════════════
// RSA + Fernet ملا کر محفوظ چینل
// ═══════════════════════════════════════
// - RSA سے Fernet کلید بھیجیں
// - Fernet سے ڈیٹا خفیہ کریں
// الف: RSA کلیدیں بنائیں
متغیر rsa = نیا غیر_متناسق(2048)
لکھو("RSA کلیدیں بنائی گئیں")
// ب: Fernet کلید بنائیں (sessions کی کلید)
متغیر fernet_کلید = متناسق.نئی_کلید()
// ج: Fernet کلید کو RSA عوامی کلید سے خفیہ کریں
متغیر خفیہ_fernet_کلید = rsa.خفیہ_کریں(fernet_کلید)
لکھو("Fernet کلید RSA سے خفیہ ہوئی")
// د: وصول کنندہ RSA نجی کلید سے Fernet کلید حاصل کرے
متغیر بحال_fernet_کلید = rsa.ظاہر_کریں(خفیہ_fernet_کلید)
// ہـ: اب Fernet سے ڈیٹا خفیہ کریں
متغیر enc = نیا متناسق(بحال_fernet_کلید)
متغیر خفیہ_ڈیٹا = enc.خفیہ_کریں("بینک اکاؤنٹ: 1234-5678-9012")
لکھو("ڈیٹا خفیہ ہوا")
// و: ڈیکرپٹ کریں
متغیر واضح_ڈیٹا = enc.ظاہر_کریں(خفیہ_ڈیٹا)
لکھو("واضح ڈیٹا:", واضح_ڈیٹا)
Previous: File Utilities → | Next: Date & Time →