نمایش نتایج 1 تا 18 از 18

نام تاپیک: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

  1. #1

    سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

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

  2. #2

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

            /// <summary>        /// Encrypt a string using dual encryption method. Return a encrypted cipher Text
    /// </summary>
    /// <param name="toEncrypt">string to be encrypted</param>
    /// <param name="useHashing">use hashing? send to for extra secirity</param>
    /// <returns></returns>
    public string Encrypt(string toEncrypt, bool useHashing)
    {
    byte[] keyArray;
    byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);


    string key = "Key for Crypt";
    if (useHashing)
    {
    MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
    keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key ));
    hashmd5.Clear();
    }
    else
    keyArray = UTF8Encoding.UTF8.GetBytes(key);


    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    tdes.Key = keyArray;
    tdes.Mode = CipherMode.ECB;
    tdes.Padding = PaddingMode.PKCS7;


    ICryptoTransform cTransform = tdes.CreateEncryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    tdes.Clear();
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
    }

    /// <summary>
    /// DeCrypt a string using dual encryption method. Return a DeCrypted clear string
    /// </summary>
    /// <param name="cipherString">encrypted string</param>
    /// <param name="useHashing">Did you use hashing to encrypt this data? pass true is yes</param>
    /// <returns></returns>
    public string Decrypt(string cipherString, bool useHashing)
    {
    byte[] keyArray;
    byte[] toEncryptArray = Convert.FromBase64String(cipherString);
    string key = "Key for Crypt";

    if (useHashing)
    {
    MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
    keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key ));
    hashmd5.Clear();
    }
    else
    keyArray = UTF8Encoding.UTF8.GetBytes(key);


    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    tdes.Key = keyArray;
    tdes.Mode = CipherMode.ECB;
    tdes.Padding = PaddingMode.PKCS7;


    ICryptoTransform cTransform = tdes.CreateDecryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

    tdes.Clear();
    return UTF8Encoding.UTF8.GetString(resultArray);
    }


    نمیدونم بهترین هست یا نه
    فقط اون key رو باید کلید crypt, decrypt بزاری

  3. #3

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    یعنی aes که میگن همین چند خط کده
    اخه توی اینترنت خیلی گشتم و کلاسش خیلی طولانی تره مثل اینکه

  4. #4
    کاربر دائمی آواتار ahmadreza.s
    تاریخ عضویت
    بهمن 1393
    محل زندگی
    Visual Studio
    پست
    175

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    سلام میتونید اینجا به صورت خیلی ساده و همراه با مثال الگوریتمشو یاد بگیرید !

  5. #5

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    نقل قول نوشته شده توسط ahmadreza.s مشاهده تاپیک
    سلام میتونید اینجا به صورت خیلی ساده و همراه با مثال الگوریتمشو یاد بگیرید !
    یعنی کلاسش همینه و در پروژم همین را کپی کنم ؟
    ولی یه چیزی منا گیج کرده
    لینک های زیر را ببینید:
    http://www.codeproject.com/Articles/...rary-with-Salt

    http://stackoverflow.com/questions/2...ion-in-c-sharp

    از RijndaelManaged استفاده کردن این پس چیه؟

  6. #6
    کاربر دائمی آواتار ahmadreza.s
    تاریخ عضویت
    بهمن 1393
    محل زندگی
    Visual Studio
    پست
    175

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    توضیحات بیشتر در مورد رمزنگاری AES رو میتونید تو همین فروم ، در این لینک ببینید ولی من یه خلاصه براتون میزارم :

    الگوریتم AES ، الگوریتمی است برای رمزنگاری که به روش متقارن کار میکنه ، یعنی با کلیدی که داده ها رمز میشن ، با همون کلید داده ها زمزگشایی میشن ،
    این الگوریتم در واقع همان الگوریتم Rijndael هست که بعد از استاندارد سازی به نام AES (Advanced Encryption Standard) تغییر نام داد...
    فضای کلید رمزنگاری این الگوریتم 128 بیتی هست و به همین دلیل دور زدن این الگورتم را کاری بسیار سخت میکنه ...
    این الگوریتم برای جایگزینی الگوریتم DES ارائه داده شد ، به این دلیل که الگوریتم DES توسط دولت فدرال آمریکا به همراه IBM ابداع شده بود و حس میشد دارای back door می تواند باشد...
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 12 شهریور 1394 در 18:40 عصر

  7. #7

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    ممنون
    فقط ورودی ایناه بایت میخوان
    حالا من چطوری رشته خودم و کلید خودم که به صورت رشته هستند را به صورت بایت ارسال کنم؟
    وبرای رمزگشایی هم همینطور؟

  8. #8
    کاربر دائمی آواتار ahmadreza.s
    تاریخ عضویت
    بهمن 1393
    محل زندگی
    Visual Studio
    پست
    175

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    static byte[] GetBytes(string str)
    {
    byte[] bytes =new byte[str.Length*sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(),0, bytes,0, bytes.Length);
    return bytes;
    }

    static string GetString(byte[] bytes)
    {
    char[] chars =new char[bytes.Length/sizeof(char)];
    System.Buffer.BlockCopy(bytes,0, chars,0, bytes.Length);
    return new string(chars);
    }

  9. #9

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    برای رمز نگاری فایل ها هم از همین استفاده میشه؟یا باید کدها را عوض کنیم؟

    اینIV چی هستش؟
    آخرین ویرایش به وسیله negar.rafie : پنج شنبه 12 شهریور 1394 در 14:27 عصر

  10. #10
    کاربر دائمی آواتار ahmadreza.s
    تاریخ عضویت
    بهمن 1393
    محل زندگی
    Visual Studio
    پست
    175

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    برای رمز نگاری فایل ها هم از همین استفاده میشه؟یا باید کدها را عوض کنیم؟

    اینIV چی هستش؟
    برای رمز نگاری فایل ها با استفاده از Aes Encryption باید یه خورده اون کد رو تغییر بدید ، به این صورت که همه ی بایت هارو از فایل بخونه و اونارو رمزنگاری کنه و بعد از رمزنگاری ، بایت های تغییر داده شده رو بنویسه !

    IV فلسفه ش طولانیه ، من یه خلاصه براتون میزارم ، منبع رو هم میزارم واسه اطلاعات بیشتر اگه خواستید میتونید مطالعه کنید :

    داشتن هر IV منحصر به فرد در هر فایل (یا رشته) رمز نگاری شده بسیار مهمه و مهم تر اینه که برای هر فایل رمزنگاری شده نباید از یک IV استفاده کرد ! و اگر IV برای عملیات دیکد کردن به صورت غلط وارد شه ممکنه فایل (یا رشته) تولیدی درست نباشه !
    پس برای رمزنگاری باید هر جفتشون رو داشته باشید و حتمن به صورت تصادفی یک IV منحصر بفرد برای هر فایل(یا رشته) ایجاد کنید

    برای اطلاعات بیشتر میتونید به این لینک مراجعه کنید

  11. #11

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    خب حالا با این حساب پیاده سازی کلاس یکم سخت شد
    میشه کلاس را راه اندازی کنید که رشته و کلید و iv را بگیره و رشته رزم شده بده و دیکد کنه؟

  12. #12
    کاربر دائمی آواتار ahmadreza.s
    تاریخ عضویت
    بهمن 1393
    محل زندگی
    Visual Studio
    پست
    175

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    سلام مثال استفاده شده در لینکی که تو پست چهار دادم رو اینجا براتون کپی میکنم :

    using System;
    using System.IO;
    using System.Security.Cryptography;

    namespace Aes_Example
    {
    class AesExample
    {
    public static void Main()
    {
    try
    {

    string original = "Here is some data to encrypt!";

    // Create a new instance of the Aes
    // class. This generates a new key and initialization
    // vector (IV).
    using (Aes myAes = Aes.Create())
    {

    // Encrypt the string to an array of bytes.
    byte[] encrypted = EncryptStringToBytes_Aes(original,
    myAes.Key, myAes.IV);

    // Decrypt the bytes to a string.
    string roundtrip = DecryptStringFromBytes_Aes(encrypted,
    myAes.Key, myAes.IV);

    //Display the original data and the decrypted data.
    Console.WriteLine("Original: {0}", original);
    Console.WriteLine("Round Trip: {0}", roundtrip);
    }

    }
    catch (Exception e)
    {
    Console.WriteLine("Error: {0}", e.Message);
    }
    }
    static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key,
    byte[] IV)
    {
    // Check arguments.
    if (plainText == null || plainText.Length <= 0)
    throw new ArgumentNullException("plainText");
    if (Key == null || Key.Length <= 0)
    throw new ArgumentNullException("Key");
    if (IV == null || IV.Length <= 0)
    throw new ArgumentNullException("Key");
    byte[] encrypted;
    // Create an Aes object
    // with the specified key and IV.
    using (Aes aesAlg = Aes.Create())
    {
    aesAlg.Key = Key;
    aesAlg.IV = IV;

    // Create a decrytor to perform the stream transform.
    ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key
    , aesAlg.IV);

    // Create the streams used for encryption.
    using (MemoryStream msEncrypt = new MemoryStream())
    {
    using (CryptoStream csEncrypt = new CryptoStream(msEncrypt
    , encryptor, CryptoStreamMode.Write))
    {
    using (StreamWriter swEncrypt = new StreamWriter(
    csEncrypt))
    {

    //Write all data to the stream.
    swEncrypt.Write(plainText);
    }
    encrypted = msEncrypt.ToArray();
    }
    }
    }


    // Return the encrypted bytes from the memory stream.
    return encrypted;

    }

    static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key
    , byte[] IV)
    {
    // Check arguments.
    if (cipherText == null || cipherText.Length <= 0)
    throw new ArgumentNullException("cipherText");
    if (Key == null || Key.Length <= 0)
    throw new ArgumentNullException("Key");
    if (IV == null || IV.Length <= 0)
    throw new ArgumentNullException("Key");

    // Declare the string used to hold
    // the decrypted text.
    string plaintext = null;

    // Create an Aes object
    // with the specified key and IV.
    using (Aes aesAlg = Aes.Create())
    {
    aesAlg.Key = Key;
    aesAlg.IV = IV;

    // Create a decrytor to perform the stream transform.
    ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key
    , aesAlg.IV);

    // Create the streams used for decryption.
    using (MemoryStream msDecrypt = new MemoryStream(cipherText))
    {
    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt
    , decryptor, CryptoStreamMode.Read))
    {
    using (StreamReader srDecrypt = new StreamReader(
    csDecrypt))
    {

    // Read the decrypted bytes from the decrypting
    stream
    // and place them in a string.
    plaintext = srDecrypt.ReadToEnd();
    }
    }
    }

    }

    return plaintext;

    }
    }
    }


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

    +++++++++++++++++++++++++++++++

    یه چیز دیگه هم بگم : این الگوریتم روش پیاده سازیش تقریبن همینه که بالا گذاشتم ، اساس همه پیاده سازی ها اینه که بایت رو بگیری رمز نگاری کنه ببره به خروجی و عملیات معمکوسش !

  13. #13

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    خوب الان کلید و iv کجا وارد میشه؟

  14. #14

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    من این را پیدا کردم؟

    http://www.aspsnippets.com/Articles/...and-VBNet.aspx

    حالا یکی از اساتید لطف کنه پاسخ بده
    مشکلی نداره
    از همین میشه داخل پروژه های بزرگ و مهم استفاده کرد؟

    این چطور
    http://www.codeproject.com/Articles/...rary-with-Salt

  15. #15

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    این را امتحان کردم فقط رشته را رمز میکنه و با هر رمزی هم رمزگشایی میکنه
    http://www.codeproject.com/Articles/...rary-with-Salt
    پس این به چه کاری میاد؟

  16. #16
    کاربر دائمی آواتار ahmadreza.s
    تاریخ عضویت
    بهمن 1393
    محل زندگی
    Visual Studio
    پست
    175

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    با سلام
    این سورس رو براتون آماده کردم ببینید

    اگه مشکلی بود همینجا مطرح کنید !
    فایل های ضمیمه فایل های ضمیمه

  17. #17

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    رمزنگاری فایل جواب نمیده
    مثلا یه فیلم 1 گیگبایت را رمزنگاری میکنم خطای کمبود حافظه میده
    چکار کنیم

  18. #18
    کاربر دائمی آواتار abdullah20
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    1,211

    نقل قول: سورس یا کلاس الگوریتم رمز نگاری AES در سی شارپ

    برای رمزنگاری فایل های حجیم باید یکم کد را تغییر بدید
    لینک های شما را من مشاهده کردم و در واقع قالب کار با AES همینه و مشکلی هم ندارند ولی در سایتهای های مختلف هر سایتی مثلا keysize را یه طور مقدار داده و تفاوت های اینگونه
    من قبلا یه کلاس برای AES پیاده سازی کردم و در داخل سی شارپ استفاده کردم
    و مواردی مثل:
    رمزنگاری فایل برای ذخیره در دیتابیس(که بررسی شده فایل های بیشتر از 1 مگابایت رمزنگاری نشوند و ذخیره نشوند در دیتابیس)
    رمز نگاری فایل های حجیم برای ذخیره در دیسک
    رمزنگاری رشته
    و . . .
    قبلا برای چندتا از دوستان در سایت فرستادم
    فکر کنم قبلا به من ایمیل زدید و ایمیل شما را دارم الان براتون ارسال میکنم

تاپیک های مشابه

  1. مقاله: یه کلاس برای رمز نگاری AES
    نوشته شده توسط morrning در بخش VB.NET
    پاسخ: 1
    آخرین پست: جمعه 02 اسفند 1392, 00:39 صبح
  2. حرفه ای: الگوریتم رمز نگاری DES
    نوشته شده توسط gerdioz در بخش C#‎‎
    پاسخ: 0
    آخرین پست: چهارشنبه 25 دی 1392, 20:30 عصر
  3. سوال: الگوریتم رمز نگاری رشته ها
    نوشته شده توسط m2011kh در بخش برنامه نویسی در 6 VB
    پاسخ: 9
    آخرین پست: پنج شنبه 05 بهمن 1391, 18:32 عصر
  4. سوال: الگوریتم رمز نگاری در vb6
    نوشته شده توسط caspianhero در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 4
    آخرین پست: دوشنبه 15 خرداد 1391, 15:34 عصر
  5. گفتگو: بررسی و توسعه یک الگوریتم رمز نگاری
    نوشته شده توسط Masoome_das در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 2
    آخرین پست: چهارشنبه 07 اردیبهشت 1390, 00:18 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •