مستندات n8n
74+ نود
🔐

رمزنگاری

Crypto

رمزنگاری و Hashing: MD5, SHA-256, HMAC, AES و UUID

ابزارها
پیشرفته
۰ بازدید
n8n 1.0+

نمای کلی

نود Crypto چیست؟

نود Crypto عملیات رمزنگاری را در Workflow فراهم می‌کند:

  1. 1Hash: محاسبه Hash (MD5, SHA-1, SHA-256, SHA-512)
  2. 2HMAC: ساخت Hash-based Message Authentication Code
  3. 3Encrypt/Decrypt: رمزنگاری و رمزگشایی با AES
  4. 4Sign/Verify: امضای دیجیتال و تأیید
  5. 5UUID/Random: تولید شناسه‌های یکتا

چرا Crypto لازم است؟

  • Webhook Verification: بررسی اصالت Webhook‌های دریافتی (GitHub, Stripe, Shopify)
  • API Authentication: ساخت امضای HMAC برای APIهای امن
  • Data Protection: رمزنگاری داده‌های حساس قبل از ذخیره
  • Password Hashing: Hash کردن رمزهای عبور
  • Checksum: بررسی صحت فایل‌ها و داده‌ها
  • Token Generation: تولید توکن‌های امن

الگوریتم‌های پشتیبانی‌شده:

  • Hash: MD5, SHA-1, SHA-256, SHA-384, SHA-512
  • HMAC: همه Hash algorithms + Secret Key
  • Encryption: AES-128, AES-256 (CBC, CTR, GCM)
  • Encoding: Base64, Hex, UTF-8

احراز هویت

بدون نیاز به احراز هویت - نود Crypto یک نود داخلی n8n است. کلیدهای رمزنگاری به صورت پارامتر در نود وارد می‌شوند.

عملیات‌های موجود

1

Hash

محاسبه Hash از متن یا داده. خروجی غیرقابل بازگشت است (one-way).

2

HMAC

ساخت HMAC (Hash-based Message Authentication Code). برای تأیید اصالت پیام با کلید مشترک.

3

Encrypt (رمزنگاری)

رمزنگاری داده با AES. خروجی قابل رمزگشایی با کلید صحیح.

4

Decrypt (رمزگشایی)

رمزگشایی داده رمزنگاری‌شده با AES. نیاز به همان کلید و الگوریتم رمزنگاری.

5

Generate UUID

تولید UUID (Universally Unique Identifier) نسخه 4. شناسه یکتای 128 بیتی.

6

Generate Random

تولید رشته تصادفی امن. مناسب برای توکن، OTP و کلید.

7

Base64 Encode/Decode

تبدیل داده به Base64 و بالعکس. مناسب برای انتقال Binary data.

کاربردهای متداول

موارد استفاده رایج

۱. تأیید Webhook (Stripe/GitHub/Shopify)

دریافت Webhook > HMAC-SHA256 با Secret > مقایسه با Header signature > رد یا قبول.

۲. امضای API Request

ساخت امضای HMAC از پارامترها > اضافه به Header > ارسال API Request.

۳. رمزنگاری داده حساس

دریافت شماره کارت/کد ملی > AES Encrypt > ذخیره در دیتابیس > Decrypt هنگام نیاز.

۴. تولید OTP

Generate Random (6 رقمی) > ذخیره با TTL > ارسال SMS > تأیید.

۵. Hash رمز عبور

دریافت رمز عبور > SHA-256 Hash > ذخیره Hash در دیتابیس.

۶. Checksum فایل

دریافت فایل > MD5/SHA-256 Hash > مقایسه با Checksum اصلی > تأیید صحت.

۷. تولید API Key

Generate UUID + Random String > Hash > ذخیره و ارسال به کاربر.

۸. امضای JWT (دستی)

ساخت Header + Payload JSON > Base64 Encode > HMAC-SHA256 > ترکیب JWT.

۹. رمزنگاری ایمیل

محتوای حساس > AES Encrypt > ارسال ایمیل > گیرنده با کلید Decrypt می‌کند.

۱۰. تولید لینک امن

پارامترها + timestamp > HMAC > اضافه به URL > تأیید در سمت سرور.

۱۱. Data Integrity

ارسال داده بین سیستم‌ها > Hash محاسبه > گیرنده Hash مقایسه می‌کند.

نکات حرفه‌ای

نکات و ترفندها

انتخاب الگوریتم Hash

  • MD5: سریع، برای Checksum (نه امنیت)
  • SHA-1: منسوخ برای امنیت
  • SHA-256: استاندارد فعلی، توصیه‌شده
  • SHA-512: امن‌تر، کندتر

تأیید Webhook Stripe

  1. 1Raw body دریافت کنید (نه parsed JSON)
  2. 2HMAC-SHA256 با Stripe Webhook Secret
  3. 3مقایسه با stripe-signature header
  4. 4timestamp بررسی کنید (جلوگیری از Replay Attack)

تأیید Webhook GitHub

  1. 1Raw body + Secret Key
  2. 2HMAC-SHA256 محاسبه
  3. 3مقایسه با X-Hub-Signature-256 header
  4. 4sha256= prefix را حذف کنید

رمزنگاری امن

  • از AES-256-GCM استفاده کنید (Authentication + Encryption)
  • IV هر بار متفاوت باشد (Random)
  • کلید را در Environment Variable ذخیره کنید
  • هرگز کلید را در Workflow ذخیره نکنید

تولید Token امن

  1. 1Crypto Random (32 بایت hex)
  2. 2یا UUID v4 + timestamp
  3. 3یا HMAC(userId + timestamp, serverSecret)

Base64 Tips

  • Base64 رمزنگاری نیست! فقط Encoding است
  • برای انتقال Binary data در JSON استفاده کنید
  • هر 3 بایت = 4 کاراکتر Base64
  • URL-safe Base64: + → - و / → _

ادغام با سایر نودها

  • HTTP Request: دریافت Webhook + تأیید HMAC
  • IF: شرط بر اساس نتیجه تأیید
  • Set: اضافه کردن Hash/Token به داده
  • Code: عملیات رمزنگاری پیچیده
  • Function: محاسبات سفارشی

امنیت کلیدها

  • کلیدها را در Credentials n8n ذخیره کنید
  • از Environment Variables استفاده کنید
  • هرگز کلید را در لاگ چاپ نکنید
  • کلیدها را مرتباً Rotate کنید
  • از Key Derivation Function (KDF) استفاده کنید

رفع مشکلات

عیب‌یابی

۱. Hash متفاوت از انتظار

مشکل: Hash محاسبه‌شده با Hash مورد انتظار فرق دارد راه‌حل: Encoding ورودی بررسی شود (UTF-8 vs ASCII). فاصله‌های اضافی حذف شوند. حروف بزرگ/کوچک Hex بررسی شود.

۲. HMAC تأیید نمی‌شود

مشکل: امضای HMAC با سرویس‌دهنده مطابقت ندارد راه‌حل: Secret key دقیقاً یکسان باشد. الگوریتم یکسان باشد. Encoding خروجی (hex vs base64) بررسی شود. داده ورودی دقیقاً همان Raw body باشد.

۳. Decrypt خطا می‌دهد

مشکل: رمزگشایی با خطا مواجه می‌شود راه‌حل: کلید و IV دقیقاً همان مقادیر Encrypt باشند. الگوریتم یکسان باشد. داده Corrupt نشده باشد.

۴. طول کلید AES اشتباه

مشکل: "Invalid key length" خطا راه‌حل: AES-128: کلید 16 بایت. AES-256: کلید 32 بایت. از Hash برای تبدیل رمز به کلید ثابت استفاده کنید.

۵. Base64 خروجی خراب

مشکل: Decode Base64 متن ناخوانا راه‌حل: بررسی کنید ورودی واقعاً Base64 باشد. Padding (=) حذف نشده باشد. URL-safe Base64 و Standard تفاوت دارند.

۶. UUID تکراری

مشکل: UUIDهای تولیدشده تکرار می‌شوند راه‌حل: UUID v4 تقریباً غیرممکن تکرار می‌شود. اگر تکرار دارید، مشکل Random number generator است.

۷. Performance با داده بزرگ

مشکل: رمزنگاری فایل‌های بزرگ کند است راه‌حل: از Streaming encryption استفاده کنید (Code node). فایل‌ها را chunk chunk پردازش کنید.

اشتراک‌گذاری:

آیا این مستندات مفید بود؟