**رمزنگاری شتابزدهٔ پودینگ** (به انگلیسی: Hasty Pudding cipher) دارای یک بلوک رمز با سایز متغیر می‌باشد که توسط ریچادر اسکروپل (Richard Schroepol) طراحی شد. این طرح در مسابقهٔ انتخاب استانداردهای رمزنگاری پیشرفته ایالات متحدهٔ آمریکا (AES) نامزد نامؤفقی بود. این بلوک رمز یک سری ویژگی‌های خاصی دارد. از جمله ویژگی‌های آن متغیر بودن اندازهٔ ورودی بلوک و طول کلید می‌باشد و همچنین شامل یک پارامتر ورودی اضافی به نام "spice "به عنوان یک ثانویه و کلید غیر مخفی می‌باشد.

رمزنگاری شتابزده پودینگ به‌طور انحصاری تنها کاندید AES توسط رمز نگاران ایالات متحدهٔ آمریکا طراحی شده بود.

رمزنگاری
--------

رمزنگاری شتابزده پودینگ شامل پنج زیر گروه متفاوت رمزنگاری است:

1. کوچک - HPC بیت ۰–۳۵
2. کوتاه - HPC بیت ۳۶–۶۴
3. متوسط - HPC بیت ۶۵–۱۲۸
4. بلند - HPC بیت ۱۲۹–۵۱۲
5. گسترش داده شده - HPC بیت 513+ bits

الگوریتم در داخل رمزنگاری شتابزدهٔ پودینگ همه از 64HPC بیتی استفاده شد و این رمز برای اجرا بر روی دستگاه‌های ۶۴ بیتی طراحی شده‌است به طوریکه به راحتی می‌توان عملیات ساده را روی کلمات ۶۴ بیتی انجام دهد.

### توسعه کلیدی

رمزنگاری شتابزده می‌تواند یک کلید (از هر تعداد بیت) برای هر کدام از پنج زیر گروه رمزنگاری را بگیرد. این رمز خود از یک جدول کلید بیت (۲۵۶کلمه ۶۴ بیتی) استفاده می‌کند. برای استخراج کلید از این جدول کلیدی از الگوریتم توسعهٔ کلیدی استفاده می‌کنند:

1. سه کلمهٔ اول [0]kx[2] , kx[1] ,k بر پایهٔ ثابت‌ها تنظیم می‌شود. زیر گروه رمزنگاری و طول کلید،[1]kx با یک ضرب محاسبه می‌شود و عملیات‌ها ی دیگر با اضافه کردن یا کمی تغییر کار می‌شود.
2. هر واژهٔ پیوندی،[1]kx با استفاده از یک فرمول بازگشتی کار آمد از سه کلمهٔ قبلی تعیین می‌شود.
3. بیت‌های کلید XORED در بیت‌های جدول کلیدی قرار دارند. از [0]kx شروع کرده و تا زمانی که تمام بیت‌های کلید استفاده شوند (کلیدهایی که بلندتر از۸٬۱۹۲ بیت می‌باشند از روش پیچیده تری استفاده می‌کند)
4. تعداد زیادی از جدول کلیدی که ساخته شده عبور می‌کتتد در هر بار یک تابع" stirring "برای هر کلمهٔ جدول کلیدی اعمال می‌شود. به دنبال آن تابع "stirring "از هشت متغیر داخلی استفاده می‌کند و همین‌طور از عملیات بیتی منطقی، عملیات تغییر بیت و عملیات افزودن و کاستن استفاده می‌کند.

در هر بار استفاده از تابع "stirring "یک کلمه در جدول کلیدی را بر اساس مقادیر قبلی یا مقادیر کلمات دیگر یا متغیرهای داخلی عملکرد" stirring "تغییر می‌دهد. (به‌طور پیش فرض سه عبور کلی وجود دارد)

### رمز گذاری و رمز گشایی

* هر کدام ار زیر گروه‌های رمز گذازی از الگوریتم‌های متفاوتی استفاده می‌کنند ولی با این حال دارای یک سری شباهت‌های کلی می‌باشند.

برای تعیین رمزنگاری از سه ورودی استفاده می‌شود:

1. متن ساده (از چند کلمهٔ ۶۴ بیتی به اضافهٔ "fragment ")
2. spice (همان پارامتر ورودی اضافی) (هشت کلمهٔ ۶۴ بیتی به همراه مقدار پیش فرض)
3. جدول کلیدی

عملیاتی که در داخل رمز انجام می‌شود شامل "stirring "می‌باشد. به طوری که برای هر کدام ترکیبی از متغیرهای داخلی در راه‌های مختلف با مقادیری از جدول کلیدی و پارامتر ورودی اضافی (spice) در فاصله‌های منظم می‌باشد. HPC کوتاه همچنین دارای دو جایگزین ثابت است و HPC کوچک شامل زیر گروه‌های رمزی خاصی می‌باشند.

زمر گشایی شامل لغو مراحل رمز گذاری یک به یک می‌باشد. بسیاری از این رمز گداری‌ها به راحتی با انجام عملیات لغو شده‌اند. (به عنوان مثال *s*0 = *s*0 + *s*1 با استفاده از محاسبه ی*s*0 = *s*0− *s*1 محاسبه می‌شود) عملیات دیگری را که برای خنثی کردن استفاده می‌شود پیچیده‌تر است که برخی از این ایده‌ها شامل موارد زیر می‌باشد:

* عملیاتی مانند (*x* = *x* (*x*>> 17 که در دو مرحله محاسبه می‌شد:

1. *x*>> 17) *x* = *x)* که به دنبال آن
2. *(x* = *x (x>> 34*

* این رمز جستجوهایی را که به ارزش‌های جدول کلیدی وابسته است استفاده می‌کند که می‌تواند انجام نشود و از آنجایی که این جستجو تنها به هشت بیت از یک متغیر بستگی دارد و هنگامی که لازم است که ارزش‌ها را که در جدول کلیدی قرار دارند در رمز گشایی بررسی کنیم، هشت بیت آخر که مقدار یک نقطه قبل از محاسبه قابل پیش‌بینی است، حتی زمانی که در این عملیات نتوان بدون ارزش کلیدی آن را حذف کرد. به عنوان مثال اگر جستجوی k بر اساس هشت بیت آخر باشد، هنگامی که می‌خواهیم یک مرحله مانند (*x* = *x(k <<8* لغو کنیم، می‌توانیم k را جستجو کنیم با توجه به این که هشت بیت آخر از x با این عملیات بدون تغییرند.

رمزنگاری پودینگ شتابزده همچنین می‌تواند برای رمز گذاری مقادیری را که در محدوده ای قرار دارند که رشته‌ها با تعداد بیتی برابرمنتقل نشود. برای مثال می‌تواند یک عدد ۰ تا N را با تولید یک عدد دیگر از ۰ تا N رمز گذاری کند، این کار را با استفاده ار کوچک‌ترین زیر گروه رمری که بتواند ورودی را به عنوان یک رشته بیتی اداره کند انجام می‌دهد و آن را از ورودی به عنوان یک رشته بیت بارگذاری کند تا زمانی که خروجی در محدوده مناسب باشد.

### عملکرد

ریچارد اسکروپل ادعا کرد که سریعترین نامزد برای AES در یک معماری بیتی بود همچنین او ادعا کرد که دو برابر سریعتر از نزدیکترین رقبای خود، DFC. و سه برابر سریعتر از دیگر کاندیدها بود و عملکرد آن بر روی یک دستگاه بیت مناسب بود. اما نظرات دیگران این دیدگاه را پشتیبانی نمی‌کند. به عنوان مثال، تجزیه اسکروپل و همکارانش، کد پدینگ شتابزده ۴ بهترین (۳۷۶ سیکل) را در دستگاه ۶۴ بیتی رتبه‌بندی کرد، هرچند برای Rijndael و Twofish، عملکرد تنها برآورد شد. در یک پنتیوم ۳۲ بیتی، رمزنگاری پودینگ شتابزده توسط Schneier et al. در ۱۶۰۰ چرخه ساعت، ۱۰ بهترین از ۱۵ نامزد. Schneier و همکاران و اسکروپل اشاره کرد که سرعت رمزگذاری به‌طور قابل ملاحظه ای بر روی دستگاه ۳۲ بیتی تأثیر می‌گذارد، زیرا استفاده سنگینی از عملیات ۶۴ بیتی، به ویژه تغییر بیت‌ها می‌کنند.

راه اندازی کلید رمز شگفت‌انگیز پدینگ به عنوان ۱۲۰۰۰۰ سیکل در پنتیوم نسبتاً کند بود.

ین رمز برای عملکرد در کارت‌های هوشمند مورد انتقاد قرار گرفت. به‌طور خاص، برخی از نظرات اشاره به مشکل نگه داشتن بیش از 2KB RAM برای جدول کلیدی است، داشتند.

جستارهای وابسته
---------------

منابع
-----

1. ↑  «Wayback Machine». ۲۰۰۳-۰۶-۲۱. بایگانی‌شده از اصلی در ۲۱ ژوئن ۲۰۰۳. دریافت‌شده در ۲۰۱۸-۰۶-۲۵.
2. ↑  Commerce، Computer Security Division, Information Technology Laboratory, National Institute of Standards and Technology, U.S. Department of. «AES Development - Cryptographic Standards and Guidelines | CSRC». *csrc.nist.gov* (به انگلیسی). دریافت‌شده در ۲۰۱۸-۰۶-۲۵.