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

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

در بعضی مواقع نیاز داریم که اطلاعاتی را رمزگذاری و یا رمزگشائی کنیم. بنابراین به شما آموزش خواهیم داد که چگونه یک اطلاعات را در یک اپلیکیشن رمزگذاری و رمزگشایی کنید. برای این نسخه آموزشی، از اپلیکیشن WPF استفاده کرده ایم. رمزگذاری و رمزگشایی کار آسانی می باشد اما چند نکته را باید به خاطر داشته باشیم.
این مثال به شما نشان خواهد داد که چگونه از C# برای رمزگذاری و رمزگشائی استفاده کنید (با استفاده از salt key برای محافظت از اطلاعات).
این نوع از رمزگذاری، symmetric-key (کلید متقارن) نامیده می شود و به این معنا می باشد کهstring فقط در صورتی رمزگشائی می شود که در قسمت دیگر کلید صحیح را داشته باشیم .
در اینجا کد رمزگذاری و رمزگشائی را قرار داده ایم.

using System;  
using System.Security.Cryptography;  
using System.Text;  
   
namespace DataEncrypterDecrypter  
{  
    public class CryptoEngine  
    {  
        public static string Encrypt(string input, string key)  
        {  
            byte[] inputArray = UTF8Encoding.UTF8.GetBytes(input);  
            TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();  
            tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);  
            tripleDES.Mode = CipherMode.ECB;  
            tripleDES.Padding = PaddingMode.PKCS7;  
            ICryptoTransform cTransform = tripleDES.CreateEncryptor();  
            byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);  
            tripleDES.Clear();  
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);  
        }  
        public static string Decrypt(string input, string key)  
        {  
            byte[] inputArray = Convert.FromBase64String(input);  
            TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();  
            tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);  
            tripleDES.Mode = CipherMode.ECB;  
            tripleDES.Padding = PaddingMode.PKCS7;  
            ICryptoTransform cTransform = tripleDES.CreateDecryptor();  
            byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);  
            tripleDES.Clear();   
            return UTF8Encoding.UTF8.GetString(resultArray);  
        }  
    }  
}

همان طور که در تصویر مشاهده می کنید، CipherMode و PaddingMode باید برای هر دو عملیات به یک صورت باشد. گزینه های متعددی برای CipherMode و PaddingMode وجود دارد، می توانید تفاوت آن ها را بخوانید و تصمیم بگیرید که کدام یک برای شما مناسب می باشد. کلید روشی می باشد که اپلیکیشن برای رمزگذاری و رمزگشائی از آن استفاده می کند که باید آن را محفوظ نگاه دارید چرا که هرکس می تواند با استفاده از آن اطلاعات شما را رمزگشایی کند و باید به صورت ۱۲۸ bit و یا حتی bit 192 باشد (حتی بین آنها).

private void encryptbtn_Click(object sender, RoutedEventArgs e)  
{  
    if(plaintext.Text!= string.Empty)  
    {  
        //Here key is of 128 bit  
        //Key should be either of 128 bit or of 192 bit  
        Ciphertext.Text = CryptoEngine.Encrypt(plaintext.Text, "sblw-3hn8-sqoy19");  
    }  
}  
  
private void decryptbtn_Click(object sender, RoutedEventArgs e)  
{  
    if(Ciphertext.Text != string.Empty)  
    {  
        //Key shpuld be same for encryption and decryption  
        decryptedtext.Text = CryptoEngine.Decrypt(Ciphertext.Text, "sblw-3hn8-sqoy19");  
    }  
}  

 

محمد نجفی

نوشته‌های مرتبط

دیدگاه‌ها

*
*

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

    001 پاسخ

    سلام
    رمز فابل هاتون چیه؟

      مسعود شریفی پاسخ

      www.mspsoft.com در انتهای مطلب نوشته شده.

ما یک پرسشنامه‌ی کوچولو داریم، که قول میدیم وقتتون رو خیلی نمی‌گیره، ولی کلی به ما کمک می‌کنه، چون هم assessment مونه ,و هم شما به ما در این زمینه کمک میکنید.بزن بریم