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

مرجع واجهة ⁦node:crypto⁩

التجزئة والتشفير والمفاتيح والتواقيع والاتفاق على المفاتيح والبيانات العشوائية

في هذه الصفحة
import { createHash, randomUUID } from "node:crypto";

console.log(createHash("sha256").update("abc").digest("hex"));
console.log(randomUUID());

الواجهة المدعومة

  • التجزئة و⁦HMAC⁩: ‏⁦createHash⁩ و⁦createHmac⁩ و⁦hash⁩ و⁦getHashes⁩
  • خوارزميات التشفير: ⁦createCipheriv⁩ و⁦createDecipheriv⁩ و⁦getCiphers⁩ و⁦getCipherInfo⁩ (‏⁦AES⁩ بأوضاع ⁦CBC⁩ و⁦CTR⁩ و⁦ECB⁩ و⁦CFB⁩ و⁦OFB⁩ و⁦GCM⁩ و⁦CCM⁩ وتغليف المفاتيح؛ و⁦ChaCha20⁩ و⁦ChaCha20-Poly1305⁩؛ و⁦3DES⁩)
  • المفاتيح: ⁦KeyObject⁩ و⁦createSecretKey⁩ و⁦createPublicKey⁩ و⁦createPrivateKey⁩، مع استيراد وتصدير ⁦PEM⁩ و⁦DER⁩ (‏⁦PKCS#1⁩ و⁦PKCS#8⁩ و⁦SPKI⁩ و⁦SEC1⁩ و⁦PKCS#8⁩ المشفّر و⁦PEM⁩ المشفّر القديم) و⁦JWK⁩
  • توليد المفاتيح: ⁦generateKeyPair⁩ و⁦generateKeyPairSync⁩ و⁦generateKey⁩ و⁦generateKeySync⁩ لـ ⁦RSA⁩ و⁦RSA-PSS⁩ و⁦DSA⁩ و⁦EC⁩ و⁦Ed25519⁩ و⁦X25519⁩ و⁦DH⁩ و⁦ML-DSA⁩ و⁦ML-KEM⁩
  • التواقيع: ⁦sign⁩ و⁦verify⁩ و⁦createSign⁩ و⁦createVerify⁩ (‏⁦PKCS#1 v1.5⁩ و⁦PSS⁩ وترميزات ⁦DER⁩ و⁦IEEE-P1363⁩ لـ ⁦ECDSA/DSA⁩)
  • تشفير ⁦RSA⁩: ‏⁦publicEncrypt⁩ و⁦privateDecrypt⁩ و⁦privateEncrypt⁩ و⁦publicDecrypt⁩
  • الاتفاق على المفاتيح: ⁦createDiffieHellman⁩ و⁦getDiffieHellman⁩ و⁦createECDH⁩ و⁦ECDH.convertKey⁩ و⁦diffieHellman⁩ و⁦getCurves⁩
  • الاشتقاق والأعداد الأولية: ⁦hkdf⁩ و⁦pbkdf2⁩ و⁦scrypt⁩ و⁦generatePrime⁩ و⁦checkPrime⁩
  • البيانات العشوائية: ⁦randomBytes⁩ و⁦randomFill⁩ و⁦randomInt⁩ و⁦randomUUID⁩
  • ⁦timingSafeEqual⁩ و⁦constants⁩ و⁦webcrypto⁩ (الكائن نفسه ⁦globalThis.crypto⁩)

يعمل التشفير في ⁦Elide⁩ على ⁦AWS-LC⁩، وهو تفرّع من ⁦BoringSSL⁩، ويعرّف عن نفسه كما يفعل ⁦Node⁩ عند بنائه مقابل ⁦BoringSSL⁩: ‏⁦process.versions.openssl⁩ قيمته ⁦1.1.1⁩ و ⁦process.features.openssl_is_boringssl⁩ قيمته ⁦true⁩. وتحمل حالات الفشل سلاسل أخطاء ⁦AWS-LC⁩ (مثل ⁦error:1e000065:Cipher functions:OPENSSL_internal:BAD_DECRYPT⁩) مع ⁦library⁩ و⁦reason⁩ ورمز ⁦ERR_OSSL_*⁩. ولا تتوفر ⁦Ed448⁩ و⁦X448⁩ و⁦OCB⁩؛ ولا يمكن تفعيل وضع ⁦FIPS⁩.

راجع توثيق ⁦crypto⁩ في ⁦Node.js⁩ لصيغ الوسائط القياسية.

Reference

Status: Partial · 95 of 112 suite tests pass (84.8%) · since 1.1.0

Exports

ExportKindStatusNotes
HashclassFullupdate(), digest(), copy()
HmacclassFullupdate(), digest()
createHash()functionFullCreates and returns a Hash object for the given algorithm
createHmac()functionFullCreates and returns an Hmac object for the given algorithm and key
randomBytes()functionFullGenerates cryptographically strong pseudorandom bytes
randomFill(), randomFillSync()functionFullFills a buffer with random bytes
randomInt()functionFullReturns a random integer n such that min <= n < max
randomUUID()functionFullGenerates a random RFC 4122 version 4 UUID string
pbkdf2(), pbkdf2Sync()functionFullDerives a key using PBKDF2
scrypt(), scryptSync()functionFullDerives a key using scrypt
timingSafeEqual()functionFullCompares two buffers in constant time to prevent timing attacks
getHashes()functionFullReturns the list of supported hash algorithm names
getCiphers()functionFullReturns the list of supported cipher algorithm names
constantspropertyFullCrypto constants such as RSA_PKCS1_PADDING
webcryptopropertyFullThe Web Crypto API (SubtleCrypto) instance

Not implemented

Certificate, X509Certificate, decapsulate, encapsulate.

Tests: node-api node:crypto: 95 pass, 17 fail, 0 error, 69 skipped. Failing: test-crypto-certificate.js, test-crypto-dh-leak.js, test-crypto-encap-decap.js, test-crypto-key-objects-messageport.js, test-crypto-keyobject-hidden-slots.js, test-crypto-pqc-encrypted-pkcs8.js, test-crypto-pqc-key-objects-ml-dsa.js, test-crypto-pqc-key-objects-ml-kem.js, and 9 more.

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