فناوری اطلاعات

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

فناوری اطلاعات

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

آخرین نظرات

رمزنگاری(Encrypt)یک رشته (String)

سید محسن علوی | يكشنبه, ۲۲ بهمن ۱۳۹۱، ۰۱:۱۶ ب.ظ

 

 

 

 

private Byte[] KEY = { 0x54, 0x54, 0x98, 079, 0x35, 0x48, 0x97, 0x12 };

        private Byte[] IV = { 0x08, 0x19, 0x24, 0x87, 0x39, 0x43, 0x16, 0x71, 0x38, 0x62, 0x93, 0x55, 0x29, 0x32, 0x95, 0x97 };

 

        public String Encrypt(String Text)

        {

            if (Text != "")

            {

                try

                {

                    Byte[] TextBytes = Encoding.UTF8.GetBytes(Text);

                    RijndaelManaged rijKey = new RijndaelManaged();

                    rijKey.Mode = CipherMode.CBC;

                    ICryptoTransform encryptor = rijKey.CreateEncryptor(KEY, IV);

                    MemoryStream memoryStream = new MemoryStream();

                    CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);

                    cryptoStream.Write(TextBytes, 0, TextBytes.Length);

                    cryptoStream.FlushFinalBlock();

                    Byte[] cipherTextBytes = memoryStream.ToArray();

                    memoryStream.Close();

                    cryptoStream.Close();

                    String cipherText = Convert.ToBase64String(cipherTextBytes);

                    Text = "";

                    rijKey.Clear();

                    encryptor.Dispose();

                    memoryStream.Dispose();

                    cryptoStream.Dispose();

                    return cipherText;

                }

                catch

                {

                    String t = "";

                    return t;

                }

            }

            else

            {

                return Text;

            }

        }

 


توضیح کدهای بالا :

 

 

Byte[] TextBytes = Encoding.UTF8.GetBytes(Text);

 

 


رشته ارسالی به تابع را با فرمت UTF8 به آرایه ای از Byte تبدیل می کند
 

 

 

RijndaelManaged rijKey = new RijndaelManaged();

 

 


ساختن یک شی از نوع کلاس RijndaelManaged که یکی از کلاسهای رمز نگاری است
 

 

 

rijKey.Mode = CipherMode.CBC;

 

 


انتخاب نوع رمز نگاری
 

 

 

ICryptoTransform encryptor = rijKey.CreateEncryptor(KEY, IV);

 

 


یک تابع مترجم رمزنگار تعریف می کند که با استفاده از Key و IV کار رمزنگاری را انجام می دهد
 

 

 

MemoryStream memoryStream = new MemoryStream();

 

 


تعریف یک MemoryStream جهت قراردادن داده رمز شده در آن.
 

 

 

CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);

 

 


کلاس CryptoStream با دریافت memoryStream، تابع رمز نگار و نوع عملیات ساخته می شود
 

 

 

cryptoStream.Write(TextBytes, 0, TextBytes.Length);

 

 


تابع write از شیء cryptoStream با گرفتن رشته ای که می خواهد رمز شود، مبدا شروع و انتهای رشته آن را رمز کرده و در بافر قرار می دهد
 

 

 

cryptoStream.FlushFinalBlock();

 

 


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

 

 

Byte[] cipherTextBytes = memoryStream.ToArray();

 

 


محتویات memoryStream را بصورت آرای از بایت در متغییر cipherTextBytes قرار می دهد.

 

 

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی