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
| Export | Kind | Status | Notes |
|---|---|---|---|
Hash | class | Full | update(), digest(), copy() |
Hmac | class | Full | update(), digest() |
createHash() | function | Full | Creates and returns a Hash object for the given algorithm |
createHmac() | function | Full | Creates and returns an Hmac object for the given algorithm and key |
randomBytes() | function | Full | Generates cryptographically strong pseudorandom bytes |
randomFill(), randomFillSync() | function | Full | Fills a buffer with random bytes |
randomInt() | function | Full | Returns a random integer n such that min <= n < max |
randomUUID() | function | Full | Generates a random RFC 4122 version 4 UUID string |
pbkdf2(), pbkdf2Sync() | function | Full | Derives a key using PBKDF2 |
scrypt(), scryptSync() | function | Full | Derives a key using scrypt |
timingSafeEqual() | function | Full | Compares two buffers in constant time to prevent timing attacks |
getHashes() | function | Full | Returns the list of supported hash algorithm names |
getCiphers() | function | Full | Returns the list of supported cipher algorithm names |
constants | property | Full | Crypto constants such as RSA_PKCS1_PADDING |
webcrypto | property | Full | The 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.