رمزنگاری حروف و متون الفبا

توی این مطلب میخوایم در مورد رمزنگار مخصوصا رمزنگار به روش روت 13 یکمم صحبت کنیم.در ابتدا یه توضیح کوتاه و یه تاریخچه از رمزنگاری داشته باشیم:

رمزنگاری حروف و متون الفبا

رمزنگاری دانشی است که به بررسی و شناختِ اصول و روش‌های انتقال یا ذخیرهٔ اطلاعات به صورت امن (حتی اگر مسیر انتقال اطلاعات و کانال‌های ارتباطی یا محل ذخیره اطلاعات ناامن باشند) می‌پردازد.

رمزنگاری استفاده از تکنیکهای ریاضی، برای برقراری امنیت اطلاعات است. دراصل رمزنگاری دانش تغییر دادن متن پیام یا اطلاعات به کمک کلید رمز و با استفاده از یک الگوریتم رمز است، به صورتی که تنها شخصی که از کلید و الگوریتم مطلع است قادر به استخراج اطلاعات اصلی از اطلاعات رمز شده باشد و شخصی که از یکی یا هر دوی آن‌ها اطلاع ندارد، نتواند به اطلاعات دسترسی پیدا کند. دانش رمزنگاری بر پایه مقدمات بسیاری از قبیل تئوری اطلاعات، نظریه اعداد و آمار بنا شده‌است و امروزه به طور خاص در علم مخابرات مورد بررسی و استفاده قرار می‌گیرد. معادل رمزنگاری در زبان انگلیسی کلمه Cryptography است، که برگرفته از لغات یونانی kryptos به مفهوم «محرمانه» و graphien به معنای «نوشتن» است. – ویکی پدیا

 

اولین بار سزار امپراتور رم باستان برای آنکه بتواند بدون اطلاع دشمن با ا ارتشش در سراسر دنیا در ارتباط باشد نوعی رمز را بکار گرفت. این رمز به این شکل بود که برای فرستادن یک پیام جای هر حرف را با سومین حرف بعد از آن در الفبا عوض می کردند، مثلا به جای ‘A’ حرف ‘D’ و به جای ‘X’ حرف ‘A’ را می گذاشتند.بنابراین برای از کد خارج کردن پیام ها کافی بود دریافت کننده جای هر حرف را با سومین حرف بعد از آن در الفبا عوض کند. رشد

خب شاید این روش اونقدر امنیت نداشته باشه اما میتونه برای ما خیلی جالب باشه یکی از همین روش های رمزنگاری متن ساده رمزنگاری متن با روت 13 هست:

 

روت۱۳ یک روش ساده برای به رمز درآوردن حروف الفباست. این روش از نوع رمزنگاری جانشینی است. در این روش، هر حرف، با سیزدهیمن حرف بعد از خود در حروف الفبا جایگزین می‌شود. ROT13 نمونه‌ای از رمز سزار است که در روم باستان بوجود آمده است.

در الفبای مقدماتی لاتین، ROT13 به صورت خودوارون عمل می‌کند. به این معنی که برای برگرداندن متن رمزشده به حالت اولیه، از همان الگوریتم استفاده می‌شود و به این ترتیب می‌توان از یک عمل یکسان هم برای رمزنگاری و هم برای رمزگشایی استفاده کرد. این الگوریتم عملاً هیچ نوع امنیتی ندارد و اغلب از آن به عنوان مثالی از یک روش رمزنگاری ضعیف و بدون امنیت یاد می‌شود. ویکی پدیا

 

خوب حالا میخوایم از این روت 13 توی زبان فارسی استفاده کنیم از اونجایی که الفبای پارسی 32 حرفه پس ما اسم رمزنگاریمونو میزاریم روت 16 😀

حالا میخوایم یه فرم ساده بسازیم که با وارد کردن حروف دقیقا همین عمل کد و دیکد صورت بگیره.

خب در ابتدا فرممون رو با html میسازیم که شامل یه input هست برای وارد کردن متن و input برای گروفتن خروجی کدهامون به صورت زیر میشه

<div style="text-align:center;direction:rtl">
    <input type="text" id="input" onkeyup="document.getElementById('output').value = rot16(document.getElementById('input').value)" placeholder="متن خود را اینجا وارد کنید">
    <br>
    <input type="text" id="output" value="" placeholder="خروجی" disabled>
</div>

خب حالا یک استایل تعریف میکنیم که ظاهر کارمون یکم زیباتر بشه پس کد های css مون به این صورت میشه

input {
    font-size:inherit;
    padding: 10px;
    margin: 10px;
    width: 80%;
}

خب در آخر نوبت میرسه به JavaScript که کار اصلی که رمزگزاریه رو اون انجام میده

var p_alphabet = ["ا", "ب", "پ", "ت", "ث", "ج", "چ", "ح", "خ", "د", "ذ", "ر", "ز", "ژ", "س", "ش", "ص", "ض", "ط", "ظ", "ع", "غ", "ف", "ق", "ک", "گ", "ل", "م", "ن", "و", "ه", "ی"];

function rot16(string) {
    var rot_text = "";
    var splitted_string = string.split("");
    for (i = 0; i < splitted_string.length; i++) {
        var letter_index = p_alphabet.indexOf(splitted_string[i]);
        if (letter_index != -1) {
            if (letter_index < 16) {
                var rotated_letter_index = letter_index + 16;
                var new_letter = p_alphabet[rotated_letter_index];
                rot_text += new_letter;
            } else {
                var rotated_letter_index = letter_index - 16;
                var new_letter = p_alphabet[rotated_letter_index];
                rot_text += new_letter;
            }
        } else {
            rot_text += splitted_string[i];
        }
    }
    return rot_text;
}

منبع  /  سورس و کد ها