انتقل إلى المحتوى

واجهة ⁦Web Crypto⁩

القيم العشوائية ومعرّفات ⁦UUID⁩ والمفاتيح والعمليات التشفيرية

في هذه الصفحة
Open in ChatGPTOpen in Claude

يوفر الكائن العام ⁦crypto⁩ ‏⁦getRandomValues(typedArray)⁩ و⁦randomUUID()⁩ و ⁦crypto.subtle⁩، وهو ⁦SubtleCrypto⁩ مدعوم بتنفيذ ⁦AWS-LC⁩ نفسه الذي يدعم ⁦node:crypto⁩. والمفاتيح كائنات ⁦CryptoKey⁩ (فئة عامة)؛ وهي تتشارك مادة المفتاح مع ⁦KeyObject⁩، لذا يحوّل ⁦KeyObject.from(cryptoKey)⁩ و⁦keyObject.toCryptoKey()⁩ دون نسخ. ويتعرّف عليها ⁦util.types.isCryptoKey()⁩ و⁦util.types.isKeyObject()⁩.

العمليةالخوارزميات
digest‏⁦SHA-1⁩ و⁦SHA-256⁩ و⁦SHA-384⁩ و⁦SHA-512⁩ و⁦SHA3-256/384/512⁩ و⁦cSHAKE128/256⁩ (دون اسم دالة أو تخصيص)
generateKey, importKey, exportKey‏⁦RSASSA-PKCS1-v1_5⁩ و⁦RSA-PSS⁩ و⁦RSA-OAEP⁩ و⁦ECDSA⁩ و⁦ECDH⁩ (‏⁦P-256⁩ و⁦P-384⁩ و⁦P-521⁩) و⁦Ed25519⁩ و⁦X25519⁩ و⁦HMAC⁩ و⁦AES-CTR/CBC/GCM/KW⁩ و⁦ChaCha20-Poly1305⁩؛ و⁦HKDF⁩ و⁦PBKDF2⁩ للاستيراد فقط
sign, verify‏⁦RSASSA-PKCS1-v1_5⁩ و⁦RSA-PSS⁩ و⁦ECDSA⁩ و⁦Ed25519⁩ و⁦HMAC⁩
encrypt, decrypt‏⁦RSA-OAEP⁩ و⁦AES-CTR⁩ و⁦AES-CBC⁩ و⁦AES-GCM⁩ و⁦ChaCha20-Poly1305⁩
wrapKey, unwrapKey‏⁦AES-KW⁩ وكل خوارزميات ⁦encrypt/decrypt⁩
deriveBits, deriveKey‏⁦ECDH⁩ و⁦X25519⁩ و⁦HKDF⁩ و⁦PBKDF2⁩
getPublicKey, SubtleCrypto.supportsكما في ⁦Node⁩ (تجريبي)

صيغ المفاتيح هي ⁦raw⁩ (والاسمان البديلان ⁦raw-public/raw-secret⁩) و⁦spki⁩ و⁦pkcs8⁩ و⁦jwk⁩.

const key = await crypto.subtle.generateKey(
  { name: "AES-GCM", length: 256 },
  true,
  ["encrypt", "decrypt"],
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const sealed = await crypto.subtle.encrypt(
  { name: "AES-GCM", iv },
  key,
  new TextEncoder().encode("hello"),
);

يتبع التحقق وأسماء الأخطاء ورسائلها سلوك ⁦Node⁩. ويتصرف ⁦Elide⁩ كبناء قائم على ⁦BoringSSL⁩، لذا فإن الخوارزميات التي لا يوفرها ⁦Node⁩ إلا على ⁦OpenSSL 3⁩ غير متاحة: إذ ترفض ⁦Ed448⁩ و⁦X448⁩ و⁦AES-OCB⁩ و⁦KMAC⁩ و⁦Argon2⁩ و⁦ML-DSA⁩ و⁦ML-KEM⁩ و⁦TurboSHAKE⁩ و⁦KangarooTwelve⁩ بـ ⁦NotSupportedError⁩.

Reference

Status: Full · Not measured · since 1.1.0

Exports

ExportKindStatusNotes
cryptoobjectFullrandomUUID(), getRandomValues(), subtle
SubtleCryptoclassFulldigest(), encrypt(), decrypt(), sign(), verify(), generateKey(), importKey(), exportKey(), deriveBits(), deriveKey(), wrapKey(), unwrapKey()

هل كانت هذه الصفحة مفيدة؟