OPENSSL-DGST(1ssl) OpenSSL OPENSSL-DGST(1ssl)

openssl-dgst - انجام عملیات خلاصه پیام (دایجست)

openssl dgst|digest [-digest] [-list] [-help] [-c] [-d] [-debug] [-hex] [-binary] [-xoflen length] [-r] [-out filename] [-sign filename|uri] [-keyform DER|PEM|P12|ENGINE] [-passin arg] [-verify filename] [-prverify filename] [-signature filename] [-sigopt nm:v] [-hmac key] [-mac alg] [-macopt nm:v] [-fips-fingerprint] [-engine id] [-engine_impl id] [-rand files] [-writerand file] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] [file ...]

این دستور خلاصه پیام (message digest) یک یا چند فایل ارائه‌شده را در قالب هگزادسیمال در خروجی چاپ می‌کند، و همچنین با استفاده از خلاصه پیام، امضاهای دیجیتال را تولید و اعتبارسنجی می‌نماید.

نام عمومی، openssl dgst، می‌تواند همراه با گزینه‌ای که الگوریتم مورد نظر را مشخص می‌کند استفاده شود. دایجست پیش‌فرض sha256 است. یک نام digest پشتیبانی‌شده نیز می‌تواند به عنوان نام زیردستور به کار رود. برای مشاهده فهرست الگوریتم‌های پشتیبانی‌شده، از "openssl list -digest-algorithms" استفاده کنید.

چاپ پیام راهنمای نحوه استفاده.
نام یک دایجست پشتیبانی‌شده را برای استفاده مشخص می‌کند. گزینه -list در زیر را ببینید:
فهرستی از خلاصه‌های پیام پشتیبانی‌شده را چاپ می‌کند.
دایجست را در گروه‌های دورقمی که با دونقطه (:) از هم جدا شده‌اند چاپ می‌کند؛ تنها زمانی کاربرد دارد که گزینه -hex نیز ارائه شده باشد.
چاپ اطلاعات اشکال‌زدایی BIO.
دایجست به صورت یک دامپ هگزادسیمال خروجی داده می‌شود. این حالت پیش‌فرض برای یک دایجست «عادی» در مقایسه با امضای دیجیتال است. برای اطلاعات درباره امضاهای دیجیتال با استفاده از -hex به بخش «نکات» در زیر مراجعه کنید.
خروجی دادن دایجست یا امضا در قالب باینری.
تنظیم طول خروجی برای الگوریتم‌های XOF مانند shake128 و shake256. این گزینه برای عملیات امضا پشتیبانی نمی‌شود.

برای ارائه‌دهندگان (providers) در OpenSSL، تنظیم این مقدار برای الگوریتم‌های shake الزامی است، زیرا مقادیر پیش‌فرض قبلی تنها به گونه‌ای تنظیم شده بودند که نیمی از حداکثر توان امنیتی را ارائه دهند.

برای تضمین حداکثر توان امنیتی ۱۲۸ بیتی، مقدار xoflen برای shake128 باید حداقل ۳۲ (بایت) تنظیم شود. برای سازگاری با نسخه‌های قبلی OpenSSL، می‌توان آن را روی ۱۶ تنظیم کرد که منجر به توان امنیتی تنها ۶۴ بیتی می‌شود.

برای تضمین حداکثر توان امنیتی ۲۵۶ بیتی، مقدار xoflen برای shake256 باید حداقل ۶۴ (بایت) تنظیم شود. برای سازگاری با نسخه‌های قبلی OpenSSL، می‌توان آن را روی ۳۲ تنظیم کرد که منجر به توان امنیتی تنها ۱۲۸ بیتی می‌شود.

خروجی دادن دایجست در قالب «coreutils»، شامل خطوط جدید. توسط برنامه‌هایی مانند sha1sum(1) استفاده می‌شود.
نام فایل خروجی، یا به طور پیش‌فرض خروجی استاندارد.
امضای دیجیتال دایجست با استفاده از کلید خصوصی ارائه‌شده.

توجه داشته باشید برای الگوریتم‌هایی که تنها از امضای تک‌مرحله‌ای (one-shot) پشتیبانی می‌کنند (مانند Ed25519،‏ ED448،‏ ML-DSA-44،‏ ML-DSA-65 و ML-DSA-87) نباید دایجست تنظیم شود. برای این الگوریتم‌ها ورودی پیش از امضا بافر می‌شود (و خلاصه نمی‌گردد). برای این الگوریتم‌ها، اگر ورودی بزرگ‌تر از ۱۶ مگابایت باشد، خطایی رخ خواهد داد.

قالب کلید برای امضا؛ به طور پیش‌فرض نامشخص است. برای جزئیات به openssl-format-options(1) مراجعه کنید.
ارسال گزینه‌ها به الگوریتم امضا در حین عملیات امضا یا اعتبارسنجی. نام‌ها و مقادیر این گزینه‌ها مختص هر الگوریتم بوده و در بخش «Signature parameters» در provider-signature(7) مستند شده‌اند.
منبع گذرواژه کلید خصوصی. برای اطلاعات بیشتر درباره قالب arg به openssl-passphrase-options(1) مراجعه کنید.
اعتبارسنجی امضا با استفاده از کلید عمومی موجود در «filename». خروجی یا «Verified OK» یا «Verification Failure» خواهد بود.
اعتبارسنجی امضا با استفاده از کلید خصوصی موجود در «filename».
امضای واقعی جهت اعتبارسنجی.
ایجاد یک MAC هش‌شده با استفاده از «key».

دستور openssl-mac(1) باید بر استفاده از این گزینه خط فرمان ارجح دانسته شود.

ایجاد MAC (کد اصالت‌سنجی پیام کلیددار). پرکاربردترین الگوریتم MAC الگوریتم HMAC (کد اصالت‌سنجی پیام مبتنی بر هش) است، اما الگوریتم‌های MAC دیگری نیز وجود دارند که مبتنی بر هش نیستند، به عنوان نمونه الگوریتم gost-mac که توسط موتور gost پشتیبانی می‌شود. کلیدهای MAC و سایر گزینه‌ها باید از طریق پارامتر -macopt تنظیم شوند.

دستور openssl-mac(1) باید بر استفاده از این گزینه خط فرمان ارجح دانسته شود.

ارسال گزینه‌ها به الگوریتم MAC که با کلید -mac مشخص شده است. گزینه‌های زیر توسط هر دو الگوریتم HMAC و gost-mac پشتیبانی می‌شوند:
کلید MAC را به صورت یک رشته الفبایی‌عددی مشخص می‌کند (زمانی استفاده شود که کلید تنها شامل نویسه‌های قابل چاپ باشد). طول رشته باید با هرگونه محدودیت‌های الگوریتم MAC مطابقت داشته باشد؛ به عنوان مثال دقیقاً ۳۲ نویسه برای gost-mac.
کلید MAC را در قالب هگزادسیمال مشخص می‌کند (دو رقم هگز به ازای هر بایت). طول کلید باید با هرگونه محدودیت‌های الگوریتم MAC مطابقت داشته باشد؛ به عنوان مثال دقیقاً ۳۲ نویسه برای gost-mac.

دستور openssl-mac(1) باید بر استفاده از این گزینه خط فرمان ارجح دانسته شود.

محاسبه HMAC با استفاده از یک کلید مشخص برای برخی عملیات OpenSSL-FIPS.
برای جزئیات به بخش «Random State Options» در openssl(1) مراجعه کنید.
بخش «Engine Options» در openssl(1) را ببینید. این گزینه منسوخ شده است.

موتور برای خلاصه‌ها استفاده نمی‌شود مگر اینکه از گزینه -engine_impl استفاده شده باشد یا برای این کار پیکربندی شده باشد؛ بخش «Engine Configuration Module» در config(5) را ببینید.

هنگامی که همراه با گزینه -engine استفاده شود، مشخص می‌کند که از موتور id برای عملیات خلاصه پیام نیز استفاده شود.
بخش‌های «Provider Options» در openssl(1)، provider(7) و property(7) را ببینید.
فایل یا فایل‌هایی که باید خلاصه شوند. اگر هیچ فایلی مشخص نشود، از ورودی استاندارد استفاده می‌شود.

برای ایجاد خلاصه پیام کدگذاری‌شده با هگزادسیمال از یک فایل:

openssl dgst -md5 -hex file.txt
or
openssl md5 file.txt

برای امضا کردن یک فایل با استفاده از SHA-256 و خروجی در یک فایل باینری:

openssl dgst -sha256 -sign privatekey.pem -out signature.sign file.txt
or
openssl sha256 -sign privatekey.pem -out signature.sign file.txt

برای اعتبارسنجی یک امضا:

openssl dgst -sha256 -verify publickey.pem \
-signature signature.sign \
file.txt

سازوکارهای دایجست موجود به گزینه‌های استفاده‌شده هنگام ساخت OpenSSL بستگی خواهند داشت. برای فهرست کردن آن‌ها می‌توان از دستور "openssl list -digest-algorithms" استفاده کرد.

برنامه‌های جدید یا چابک بهتر است از SHA-256 استفاده کنند. سایر دایجست‌ها، به‌ویژه SHA-1 و MD5، هنوز به طور گسترده برای تعامل‌پذیری با قالب‌ها و پروتکل‌های موجود به کار می‌روند.

هنگام امضای یک فایل، این دستور الگوریتم مورد استفاده برای امضا (RSA، ECC و غیره) را بر اساس اطلاعات ASN.1 کلید خصوصی به طور خودکار تعیین می‌کند. هنگام اعتبارسنجی امضاها، این دستور تنها خود امضای RSA، DSA یا ECDSA را پردازش می‌کند، نه داده‌های مرتبط با شناسایی امضاکننده و الگوریتم استفاده‌شده در قالب‌هایی مانند X.509، CMS و S/MIME.

برای برخی الگوریتم‌های امضا، به‌ویژه ECDSA و DSA، یک منبع تولید اعداد تصادفی الزامی است.

گزینه‌های امضا و اعتبارسنجی تنها در صورتی باید استفاده شوند که یک فایل منفرد در حال امضا یا اعتبارسنجی باشد.

امضاهای هگزادسیمال را نمی‌توان با استفاده از openssl اعتبارسنجی کرد. در عوض، پیش از اعتبارسنجی از «xxd -r» یا برنامه‌ای مشابه برای تبدیل امضای هگز به یک امضای باینری استفاده کنید.

دستور openssl-mac(1) بر گزینه‌های خط فرمان -hmac، -mac و -macopt ترجیح داده می‌شود.

openssl-mac(1)

دایجست پیش‌فرض در OpenSSL 1.1.0 از MD5 به SHA256 تغییر یافت. گزینه‌های مرتبط با FIPS در OpenSSL 1.1.0 حذف شدند.

گزینه‌های -engine و -engine_impl در OpenSSL 3.0 منسوخ شدند.

حق نشر 2000-2025 متعلق به The OpenSSL Project Authors است. کلیه حقوق محفوظ است.

تحت مجوز Apache License 2.0 («مجوز») منتشر شده است. شما نمی‌توانید از این فایل استفاده کنید مگر در انطباق با این مجوز. می‌توانید یک نسخه از آن را در فایل LICENSE در توزیع مبدأ یا در https://www.openssl.org/source/license.html دریافت نمایید.

2026-08-25 3.6.4