رمز ساده

رمز ساده

متوسط

دستورالعمل‌ها

یک پیاده‌سازی از رمز ویگنر بسازید. رمز ویگنر یک رمز جانشینی ساده است.

اصطلاحات رمز

رمز یک الگوریتم است که برای رمزنگاری یا کدگذاری یک رشته به کار می‌رود. به رشته‌ی رمزنگاری‌نشده متن ساده و به رشته‌ی رمزنگاری‌شده متن رمز می‌گویند. تبدیل متن ساده به متن رمز کدگذاری و برعکس آن کدبرداری نامیده می‌شود.

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

جزئیات کدگذاری

در این رمز، کلید مجموعه‌ای از حروف کوچک است، مانند "abcd". هر حرف متن ساده بر اساس حرف متناظرش در کلید، به اندازه‌ی مشخصی جابه‌جا یا چرخانده می‌شود. یک "a" در کلید به معنای جابه‌جایی ۰ است (یعنی بدون جابه‌جایی). یک "b" در کلید به معنای جابه‌جایی ۱ است. یک "c" در کلید به معنای جابه‌جایی ۲ است و به همین ترتیب.

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

اگر کلید فقط یک حرف داشته باشد، مانند "dddddd"، آن‌گاه همه‌ی حروف متن ساده به یک اندازه جابه‌جا می‌شوند (در این مثال سه)، و این همان رمز چرخشی یا رمز جابه‌جایی می‌شود (که گاهی رمز سزار نامیده می‌شود). برای مثال، متن ساده "iamapandabear" به "ldpdsdqgdehdu" تبدیل می‌شود.

اگر کلید فقط حرف "a" باشد (یک بار یا بیشتر)، اندازه‌ی جابه‌جایی صفر است و متن رمز با متن ساده یکسان است.

البته معمولاً کلید پیچیده‌تر از این است! اگر کلید "abcd" باشد، حروف متن ساده به اندازه‌های ۰، ۱، ۲ و ۳ جابه‌جا می‌شوند. اگر متن ساده "hello" باشد، به ۵ جابه‌جایی نیاز داریم، پس کلید دور می‌خورد و اندازه‌های جابه‌جایی ۰، ۱، ۲، ۳ و ۰ می‌شوند. با اعمال این جابه‌جایی‌ها روی حروف "hello" به "hfnoo" می‌رسیم.

کلیدهای تصادفی

اگر کلیدی ارائه نشود، کلیدی تولید کنید که دست‌کم از ۱۰۰ حرف کوچک تصادفی از الفبای لاتین تشکیل شده باشد.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Crystal Exercism

آماده‌اید رمز ساده را شروع کنید؟

در Exercism ثبت‌نام کنید تا Crystal را همراه با 26 مفهوم142 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.