صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 49

نام تاپیک: الگوریتم رمزنگاری Encrypt / Decrypt

  1. #1

    الگوریتم رمزنگاری Encrypt / Decrypt

    سلام دوستان
    یک سوال داشتم و اینکه ایا درست است از الگوریتم های رمزنگاری اماده برای ذخیره داده در دیتابیس استفاده کنیم و یا نه باید یه الگوریتم جدید برای خودمان درست کنیم؟

  2. #2

    نقل قول: درمورد الگوریتم رمزنگاری

    سلام

    الگوریتم ها رمزنگاری مثل MD5 یکی از قوی ترین الگوریتم ها به حساب میان.
    حتی فروم های مثل mybb از این الگوریتم برای هش کردن پسورد ها استفاده میکنن.
    در هر صورت احتمال دیکد شدن وجود داره ولی گاهی اوقات این احتمال به 0 می رسه.
    به نظر من استفاده از این الگوریتم ها خیلی بهتره.

    موفق باشید.

  3. #3

    نقل قول: درمورد الگوریتم رمزنگاری

    نقل قول نوشته شده توسط felfely مشاهده تاپیک
    سلام


    به نظر من استفاده از این الگوریتم ها خیلی بهتره.
    منظورتون الگوریتم های اماده است ؟
    مثلا اسم این الگوریتم رمزنگاری چیه و ایا مناسب است؟

  4. #4

    نقل قول: درمورد الگوریتم رمزنگاری

    بله. منظورم الگوریتم آماده ست.
    حقیقتش تو لینکی که دادید نمیدونم چه الگوریتمی به کار رفته ولی من خودم یه بار با MD5 نوشتم.
    اگه میخواین می تونم کدش رو براتون آپلود کنم.

  5. #5

    نقل قول: درمورد الگوریتم رمزنگاری

    من تا اونجایی که شنیدم الگوریتم md5 برگشت ناپذیر است؟
    خواهش می کنم در مورد این الگوریتم تو ضیح بدید که چی است بعد اگر زحمتی نیست کدش را اپلود کنید

  6. #6

    نقل قول: درمورد الگوریتم رمزنگاری

    سلام این الگوریتم رمز نگاری قابل بازگشت Rijndael هستش :
    امنیتش هم خوبه این نوع الگریتم ها جز توابع Framework هستند.
    بله طبق گفته خودتون ، میتونید الگریتم خاصی رو بسازید و با فرمول خودتون هم قابل بازگشت باشه.
    پیروز و موفق






    string SecureDataAlg(string StrInp,byte[] key,byte[] iv)


    {

    byte[] input =
    Encoding.UTF8.GetBytes(StrInp);



    CryptoStream
    cryptoStream = null;

    RijndaelManaged rijndael = null;


    ICryptoTransform rijndaelTransform = null;


    MemoryStream memStream = null;



    rijndael = new
    RijndaelManaged();

    rijndael.Key = key;


    rijndael.IV = iv;



    rijndaelTransform = rijndael.CreateEncryptor();



    memStream = new
    MemoryStream();

    cryptoStream = new CryptoStream(memStream,
    rijndaelTransform, CryptoStreamMode.Write);




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




    cryptoStream.FlushFinalBlock();

    byte[] str =
    memStream.ToArray();



    return
    Convert.ToBase64String(str);

    }

  7. #7

    نقل قول: درمورد الگوریتم رمزنگاری

    MD5 یک الگوریتم معمولا" یک طرفه هست یعنی اینکه با داشتن رشته کد شده به سختی می تونید به رشته اصلی برسید. البته این غیر ممکن نیست چون تو sql injection (یکی از روش های هک) به سخی میشه به رشته اولیه رسید.
    شاید یه سوال تو ذهنتون پیش بیاد که وقتی یک طرفه ست پس چرا ازش استفاده میکنن؟ یا این که وقتی یه طرفه ست پس چطوری می تونین تو فروم ها لوگین کنیم با این که پسورد اصلی ما دیگه غیر قابل برگشته؟
    جوابش اینه که وقتی شما با پسورد برای مثال 12345 تو یه فروم ثبت نام می کنید، پسوردتون این جوری ذخیره میشه : 827ccb0eea8a706c4c34a16891f84e7b
    زمانی که میخواین به فروم لوگین کنید با زدن پسورد 12345، برنامه نویس نمیاد رشته 827ccb0eea8a706c4c34a16891f84e7b رو تبدیل کنه به 12345. بعد ببینه آیا پسورد رو درست وارد کردید یا نه! بلکه میاد پسورد وارد شده توسط کاربر رو تبدیل به کد MD5 می کنه با کد MD5 ذخیره شد در دیتابیس مقایسه می کنه که آیا برابری دارن یا نه؟
    این بود یه توضیح خیلی مختصری از نحوه استفااده از الگوریتم MD5
    ---------------------------------
    در ضمن هر رشته ای رو که وارد کنید تبدیل به یک رشته 32 کاراکتری میکنه.
    به این سایت یه سر بزنید:
    http://www.md5.cz/
    ---------------------------------
    نمونه برنامه ضمیمه شد.


    موفق باشید.
    فایل های ضمیمه فایل های ضمیمه

  8. #8

    نقل قول: درمورد الگوریتم رمزنگاری

    پس اگر ما خواستیم اطلاعاتی به غیر از پسورد را در دیتابیس ذخیره کنیم نمیشه از md5 استفاده کرد چون وقتی برنامه اجرا شد باید تمام اطلاعات رمزگشایی بشن درسته؟

  9. #9
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

    خوب از AES استفاده کنید:
    خیلی خوب جواب میده.
    و دو طرفه هم هست!
    مثل MD5 و Sha1 و ... یک طرفه نیست

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

    namespace AES_Encryption
    {

    public class AES
    {
    public AES()
    {
    }

    private byte[] Encrypt(byte[] clearData, byte[] Key, byte[] IV)
    {

    MemoryStream ms = new MemoryStream();

    Rijndael alg = Rijndael.Create();
    alg.Key = Key;

    alg.IV = IV;
    CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);

    cs.Write(clearData, 0, clearData.Length);
    cs.Close();
    byte[] encryptedData = ms.ToArray();
    return encryptedData;
    }

    private byte[] Decrypt(byte[] cipherData, byte[] Key, byte[] IV)
    {

    MemoryStream ms = new MemoryStream();
    Rijndael alg = Rijndael.Create();
    alg.Key = Key;
    alg.IV = IV;
    CryptoStream cs = new CryptoStream(ms, alg.CreateDecryptor(), CryptoStreamMode.Write);
    cs.Write(cipherData, 0, cipherData.Length);
    cs.Close();
    byte[] decryptedData = ms.ToArray();
    return decryptedData;
    }


    public string Decrypt(string Data, string Password, int Bits)
    {

    byte[] cipherBytes = Convert.FromBase64String(Data);

    PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,

    new byte[] { 0x00, 0x01, 0x02, 0x1C, 0x1D, 0x1E, 0x03, 0x04, 0x05, 0x0F, 0x20, 0x21, 0xAD, 0xAF, 0xA4 });

    if (Bits == 128)
    {
    byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(16), pdb.GetBytes(16));
    return System.Text.Encoding.Unicode.GetString(decryptedDa ta);
    }
    else if (Bits == 192)
    {
    byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(24), pdb.GetBytes(16));
    return System.Text.Encoding.Unicode.GetString(decryptedDa ta);
    }
    else if (Bits == 256)
    {
    byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16));
    return System.Text.Encoding.Unicode.GetString(decryptedDa ta);
    }
    else
    {
    return string.Concat(Bits);
    }

    }

    public string Encrypt(string Data, string Password, int Bits)
    {

    byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(Data);

    PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,

    new byte[] { 0x00, 0x01, 0x02, 0x1C, 0x1D, 0x1E, 0x03, 0x04, 0x05, 0x0F, 0x20, 0x21, 0xAD, 0xAF, 0xA4 });

    if (Bits == 128)
    {
    byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(16), pdb.GetBytes(16));
    return Convert.ToBase64String(encryptedData);
    }
    else if (Bits == 192)
    {
    byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(24), pdb.GetBytes(16));
    return Convert.ToBase64String(encryptedData);
    }
    else if (Bits == 256)
    {
    byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
    return Convert.ToBase64String(encryptedData);
    }
    else
    {
    return string.Concat(Bits);
    }
    }


    }
    }


    اینو یه مدیر بهم داده قابل اطمینان هستش
    من هم ازش زیاد استفاده کردم!

  10. #10
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

    از Base 64 هم می تونید استفاده کنید!
           Convert.ToBase64String();


    Convert.FromBase64String();

  11. #11
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

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

  12. #12

    نقل قول: درمورد الگوریتم رمزنگاری

    حالا فرض کنید ما از یه الگوریتم اماده مثل همون چیزی که شما کدش را گذاشتید استفاده کردیم
    حالا اگر یه نفر بفهمه که ما از این الگوریتم استفاده کردیم که انگار اصلا رمزنگاری صورت نگرفته چون اون شخص به راحتی به داد های اصلی دستت پیدا می کنه
    حالا برای این مورد باید چه کار کنیم

  13. #13

    نقل قول: درمورد الگوریتم رمزنگاری

    encrypt/decrypt معمولا با یک کلید انجام میشه و حتی با فهمیدن الگوریتم بدون داشتن اون کلید نمیشه کدگشایی کرد.

  14. #14
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    سلام نگار خانوم
    من پايان نامه دانشگاهم رمزكننده بوده!
    Md5و SH1 و امثالهم يك طرفه هستن! در واقع اينها الكويتم رمز كننده نيستن! اين ها فقط Hash هستند
    اما الگويتم هاي معروفي مثل NSA,RSA,AES و امثالهم از الگوريتم هاي قوي مستحكم رمزنگاري هستن كه هم كليد عمومي دارند و هم كليد خصوصي
    اما اين نظر كه شما براي خودت يه الگوريتم رمز بنويسي كار عاقلانه اي نيست!! چون هيج جاي دنيا تا يك الگوريتم به مدت 10 سال تست نشود به هيج عنوان به عنوان الگوريتم رمز در يك پروژه استفاده نمي شود!! حتي RSA كه در رمز كننده هاي بي سيم برد بلند و بي پرش فركانسي خيلي از ارتش هاي مطرح دنيا و حتي در نيروهاي مسلح خودمان هم استفاده ميشه تا بحال دو بار در سال 1986 و 1994شكسته شده پس شما به دنبال الگوريتم من درآوردي نباش!! از الگوريتم هاي معروف استفاده كن!! اگه به كتاب "شبكه هاي كامپيوتري تننبائوم" دسترسي داري مطالب خوب و الكورتيم هاي خوبي واسه رمز اونجا د اره!!‌
    اگه سوالي بود در خدمتم!

  15. #15
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    نگار خانوم در مورد اينكه فرموده بودي اگه يه نفر الگوريتم را بدونه پس راحت عبارت ما را كشف مي كنه داري اشتباه مي كني!!
    در رمزنگاري نوين الگورتيم اصلا مهم نيست!! همه دنيا الكوريتمهاشون را به اشتراك مي ذارن تو همه روش كار كنن كه بتونن بازش كنن! چون اصلا الگوريتم مهم نيست!!!
    در رمزنگاري شما سه مفهوم داري!! 1) الگوريتم 2) كليد عمومي 3) كليد خصوصي
    شما با داشتن هر 3 تا پارامتر فوق مي توني يه عبارت را كشف كني داشتن الگوريتم به تنهايي كاري نمي كنه

  16. #16

    نقل قول: درمورد الگوریتم رمزنگاری

    خیلی ممنون
    اقا امیر حدودا چند تا الگوریتم رمز نگاری وجود داره؟
    آخرین ویرایش به وسیله negar.rafie : یک شنبه 12 شهریور 1391 در 10:51 صبح

  17. #17
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    الكوريتم رمز كه خيلي زياد وجود داره اما در اكثر پروژه هاي مطرح دنيا از يكي از چهار الگوريتم روبرو استفاده مي شه -------------------->> NSA,RSA,AES,Rijndael
    من خودم الگوريتم AES و RSA را دوست دارم و هميشه از اين دو تا استفاده مي كنم! البته يك الگوريتم بومي هم وجود داره كه وزارت دفاع و دانشگاه شريف با هم طراحي كردن معروف به ماده 48 كه اون هم خيلي خوبه
    اما من به شما توصيه مي كنم كه AES يا RSA استفاده كنيد كه هم امن هستن و هم كاركردن باهاشون راحته!!
    در مورد قطعه كدي كه شما فرستاديد هم كاملا تابلوئه كه الگوريتم AES هست منتها كلاس Pure را ننوشته كه بايد خودتون فكرك نم بريد دنبالش!! من در حال حاضر منزل نيستم وگرنه فكر كنم كلاس Pure‌اين الگوريتم را داشته باشم كه براتون بفرستم!
    مورد دوم هم اينكه در قطعه كد شما فقط كليد خصوصي در نظر گرفته شده! پس كليد عمومي اش كو؟؟ كليد عمومي بايد يك Table باشه كه خودتون طراحي مي كنيد! كليد خصوصي از داخل كليد عمومي استخراج ميشه! توي قطعه كد شما كليد خصوصي اومده اما كليد عمومي نيومده پس فايده هم نداره!
    ياز اگه موردي بود در خدمتم!

  18. #18

    نقل قول: درمورد الگوریتم رمزنگاری

    دوست خوبمون Farshid007 الگوریتم AES را در صفحه اول گذاشتن ایا مشکلی نداره؟

  19. #19
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    سلام مجدد
    بله همون قطعه كد آقا فرشيد خوبه!! منتها سعي كن در ادامه حتما با مفاهيم كليد عمومي و كليد خصوصي هم آشنا بشي خيلي جلو مي افتي
    ولي فعلا از همون كد آقا فرشيد استفاده كن
    كتاب "شبكه هاي كامپيوتري تننبائوم" را بخون حتما

  20. #20

    نقل قول: درمورد الگوریتم رمزنگاری

    سلام
    دوستان من الگوریتم رمز نگاری AES صفحه قبل به این صورت استفاده می کنم:
            AES AES = new AES();
    private void button1_Click(object sender, EventArgs e)
    {

    textBox2.Text = AES.Encrypt(textBox1.Text, "123", 256);
    }

    private void button2_Click(object sender, EventArgs e)
    {
    textBox4.Text = AES.Decrypt(textBox3.Text, "123", 256);
    }


    حالا ایا این طرز استفاده درست است ؟
    به عنوان سوال بعدی اینکه پارامتر اول که رشته مورد نظر ما است پارامتر دومم که برای گذاشتن رمز دلخواه برای عمل رمزنگاری است حالا پارامتر سوم برای چی است؟وایا ایا اگر از 256 استفاده کنیم بهتر است تا اینکه از 128 استفاده کنیم؟

  21. #21
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    از 256 استفاده كني بهتره! با دايره 256 جايگشت هاي بيشتري برات توليد ميشه!!
    راستي شما منو به فكر انداختي كه يه برنامه بنويسم و تمام كلاس هاي الگوريتميك رمز را درش استفاده كنم
    به محض آماده شدن براتون ارسال مي كنم!

  22. #22
    کاربر تازه وارد آواتار ≡ ALEX ≡
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    San Frabarnamenevisco
    پست
    87

    نقل قول: درمورد الگوریتم رمزنگاری

    یکسری الگوریتم ها عملا برگشت نا پذیر هستند مانند MD5 و SHA1 و ... . این الگوریتم ها صرفا جهت انکریپت کردن اطلاعات و مقایسه کاربرد دارند. حالا یا مثل MD5 کلید متقارن ندارند یا مثل SHA1 از یک کلید استفاده می کنند. کلید یک لایه اضافی جهت انکریپت کردن داده است که باعث می شود یک داده با هر کلید متفاوت رمز متفاوتی را تولید کند. اصطلاحا به این کلید Salt هم گفته می شود. خوب شما یک فرم Login رو اگر در نظر بگیرید، پسورد کاربر در دیتابیس اگر به صورت MD5 ذخیره شده باشه، پسورد ورودی توسط کاربر نیز می بایست به کد MD5 تبدیل شود و با مقدار داخل دیتابیس مقایسه گردد، در صورت یکسان بودن اجازه ورود صادر می شود. یا اگر در دیتابیس بصورت SHA1 باشد، پس می بایست یک Salt نیز داشته باشد، معمولا این Salt را نیز در خود دیتابیس بصورت جداگانه و یا با یک ترکیب ابتکاری روی خود کد هش شده پسورد ذخیره می کنند. لذا پس از لاگین کردن کاربر می بایست Salt و Hash استخراج شود تا به کمک آن پسورد داده شده هش شود و با مقدار استخراج شده هش مقایسه گردد.

    نوع دیگر الگوریتم ها قابل برگشت است. مثلا XTEA یا AES که یک الگوریتم جهت Encoding و یک الگوریتم برای Decoding در اختیار شما می گذارد که می توانید داده های هش شده را مجددا و به راحتی به شکل اولیه خود درآورید. این الگوریتم ها هم مثل مورد قبلی، همان دو نوع را دارند. مثلا همین XTEA یا AES می تواند همراه یک کلید متقارن استفاده گردد و بدون وجود کلید دیکد داده ها غیر ممکن می شود.

    در نتیجه بسته به نیاز شما یا می بایست از یکی از متد های موجود استفاده کنید یا آن ها را با هم ترکیب کنید و چند ابتکار به صورت رندوم در داخل آن ها بگنجانید و یا خودتان یک الگوریتم ابداع کنید که این مورد آخر نیاز به درک بالا از ریاضیات و مفاهیم محاسبه کامپیوتر دارند که معمولا در کتب آموزشی اسمبلی و معماری کامپیوتر به آن ها اشاره می شود.

  23. #23
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    با نظرات جناب آلكس 100 در 100 مخالفم!!!! با عرض معذرت از دوست عزيز آلكس
    الگوريتم هاي ديتابيس و غيرديتابيسي نداريم توي دنيا!
    دوم اينكه فرق مفاهيم coding , encoding , decoding با مفهوم رمزنگاري يعني Encryption , Decryption مثل فرق پيتزا مخلوط با ماشين بنز است!

  24. #24
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

    این هم AES هستش
    public static  class Encrypt
    {

    private static readonly byte[] Salt = Encoding.ASCII.GetBytes("o6806642kbM7c5");


    public static string EncryptStringAES(string plainText, string sharedSecret)
    {
    if (string.IsNullOrEmpty(plainText))
    throw new ArgumentNullException("plainText");
    if (string.IsNullOrEmpty(sharedSecret))
    throw new ArgumentNullException("sharedSecret");

    string outStr;
    RijndaelManaged aesAlg = null;
    try
    {
    // generate the key from the shared secret and the salt
    var key = new Rfc2898DeriveBytes(sharedSecret, Salt);

    // Create a RijndaelManaged object
    // with the specified key and IV.
    aesAlg = new RijndaelManaged();
    aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);
    aesAlg.IV = key.GetBytes(aesAlg.BlockSize / 8);

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

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

    //Write all data to the stream.
    swEncrypt.Write(plainText);
    }
    }
    outStr = Convert.ToBase64String(msEncrypt.ToArray());
    }
    }
    finally
    {
    // Clear the RijndaelManaged object.
    if (aesAlg != null)
    aesAlg.Clear();
    }

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

    /// <summary>
    /// Decrypt the given string. Assumes the string was encrypted using
    /// EncryptStringAES(), using an identical sharedSecret.
    /// </summary>
    /// <param name="cipherText">The text to decrypt.</param>
    /// <param name="sharedSecret">A password used to generate a key for decryption.</param>
    public static string DecryptStringAES(string cipherText, string sharedSecret)
    {
    if (string.IsNullOrEmpty(cipherText))
    throw new ArgumentNullException("cipherText");
    if (string.IsNullOrEmpty(sharedSecret))
    throw new ArgumentNullException("sharedSecret");

    // Declare the RijndaelManaged object
    // used to decrypt the data.
    RijndaelManaged aesAlg = null;

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

    try
    {
    // generate the key from the shared secret and the salt
    var key = new Rfc2898DeriveBytes(sharedSecret, Salt);

    // Create a RijndaelManaged object
    // with the specified key and IV.
    aesAlg = new RijndaelManaged();
    aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);
    aesAlg.IV = key.GetBytes(aesAlg.BlockSize / 8);

    // Create a decrytor to perform the stream transform.
    var decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
    // Create the streams used for decryption.
    var bytes = Convert.FromBase64String(cipherText);
    using (var msDecrypt = new MemoryStream(bytes))
    {
    using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
    {
    using (var srDecrypt = new StreamReader(csDecrypt))

    // Read the decrypted bytes from the decrypting stream
    // and place them in a string.
    plaintext = srDecrypt.ReadToEnd();
    }
    }
    }
    finally
    {
    // Clear the RijndaelManaged object.
    if (aesAlg != null)
    aesAlg.Clear();
    }

    return plaintext;
    }


    }
    آخرین ویرایش به وسیله Farshid007 : دوشنبه 13 شهریور 1391 در 15:11 عصر

  25. #25
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

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

  26. #26
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

    نقل قول نوشته شده توسط ≡ ALEX ≡ مشاهده تاپیک
    یکسری الگوریتم ها عملا برگشت نا پذیر هستند مانند MD5 و SHA1 و ... . این الگوریتم ها صرفا جهت انکریپت کردن اطلاعات و مقایسه کاربرد دارند. حالا یا مثل MD5 کلید متقارن ندارند یا مثل SHA1 از یک کلید استفاده می کنند. کلید یک لایه اضافی جهت انکریپت کردن داده است که باعث می شود یک داده با هر کلید متفاوت رمز متفاوتی را تولید کند. اصطلاحا به این کلید Salt هم گفته می شود. خوب شما یک فرم Login رو اگر در نظر بگیرید، پسورد کاربر در دیتابیس اگر به صورت MD5 ذخیره شده باشه، پسورد ورودی توسط کاربر نیز می بایست به کد MD5 تبدیل شود و با مقدار داخل دیتابیس مقایسه گردد، در صورت یکسان بودن اجازه ورود صادر می شود. یا اگر در دیتابیس بصورت SHA1 باشد، پس می بایست یک Salt نیز داشته باشد، معمولا این Salt را نیز در خود دیتابیس بصورت جداگانه و یا با یک ترکیب ابتکاری روی خود کد هش شده پسورد ذخیره می کنند. لذا پس از لاگین کردن کاربر می بایست Salt و Hash استخراج شود تا به کمک آن پسورد داده شده هش شود و با مقدار استخراج شده هش مقایسه گردد.

    نوع دیگر الگوریتم ها قابل برگشت است. مثلا XTEA یا AES که یک الگوریتم جهت Encoding و یک الگوریتم برای Decoding در اختیار شما می گذارد که می توانید داده های هش شده را مجددا و به راحتی به شکل اولیه خود درآورید. این الگوریتم ها هم مثل مورد قبلی، همان دو نوع را دارند. مثلا همین XTEA یا AES می تواند همراه یک کلید متقارن استفاده گردد و بدون وجود کلید دیکد داده ها غیر ممکن می شود.

    در نتیجه بسته به نیاز شما یا می بایست از یکی از متد های موجود استفاده کنید یا آن ها را با هم ترکیب کنید و چند ابتکار به صورت رندوم در داخل آن ها بگنجانید و یا خودتان یک الگوریتم ابداع کنید که این مورد آخر نیاز به درک بالا از ریاضیات و مفاهیم محاسبه کامپیوتر دارند که معمولا در کتب آموزشی اسمبلی و معماری کامپیوتر به آن ها اشاره می شود.
    در مورد سیستم لوگین استفاده از غیر قابل برگشت مناسب نیست
    فکرکن می خواهی قسمت >> کلمه عبور را فراموش کرده ام؟
    بزاری اون وقت چی !

  27. #27

    نقل قول: درمورد الگوریتم رمزنگاری

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

  28. #28
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: درمورد الگوریتم رمزنگاری

    نقل قول نوشته شده توسط Farshid007 مشاهده تاپیک
    در مورد سیستم لوگین استفاده از غیر قابل برگشت مناسب نیست
    فکرکن می خواهی قسمت >> کلمه عبور را فراموش کرده ام؟
    بزاری اون وقت چی !
    اون وقت یک رمز جدید به کاربر میدی(تا حالا برات اتفاق نیافتاده؟)
    هر موقع هم که رمز قبلی یادش اومد اطلاعات رمزنگاری شدش رو باز میکنی
    (همون روشی که همه سیستم عامل ها برای اطلاعات کابرهاشون انجام میدن/Windows/Linux/OSX)

  29. #29
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: درمورد الگوریتم رمزنگاری

    فکر میکنم باید با AES Instruction set حرفم رو پس بگیرم
    روی سیستم قبلیم اینطوری نبود
    نتایج برای خودم هم باورنکردنیه:
    Intel Core i5 520M with AES Instruction set
    no daemons/graphics running
    debian wheezy/sid
    OpenSSL 1.0.1c 10 May 2012
    built on: Sun Jul 29 14:39:13 CEST 2012
    options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
    compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
    The 'numbers' are in 1000s of bytes per second processed.
    type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
    aes-128-cbc 678344.37k 742513.42k 758942.46k 765944.12k 764801.28k
    aes-128-ecb 687190.89k 1652480.92k 2050713.77k 2193133.68k 2234451.56k
    aes-192-cbc 575930.86k 624143.65k 637024.49k 640274.32k 637465.94k
    aes-192-ecb 581709.99k 1439841.16k 1750036.72k 1846704.55k 1876094.03k
    aes-256-cbc 501747.63k 537884.06k 545918.04k 549998.28k 549392.78k
    aes-256-ecb 508548.99k 1291236.28k 1517516.46k 1595836.19k 1617640.54k
    bf-cbc 77464.63k 102084.33k 105018.31k 107040.19k 107296.02k
    bf-cbc 91657.91k 103576.98k 106532.18k 108363.52k 107463.15k
    bf-cfb 83602.12k 89467.06k 90894.76k 91792.52k 91816.16k
    bf-ecb 99084.84k 104105.48k 105687.59k 105974.75k 106074.07k
    bf-ofb 84081.38k 93768.78k 96180.14k 96911.84k 97090.27k
    camellia-128-cbc 79607.27k 117114.88k 132797.87k 137875.26k 139209.20k
    camellia-128-ecb 121221.00k 130658.03k 132934.21k 133582.34k 133658.37k
    camellia-192-cbc 65872.08k 91571.84k 100953.34k 104151.42k 104832.94k
    camellia-192-ecb 94234.81k 100368.44k 101582.85k 102234.58k 102221.91k
    camellia-256-cbc 66251.34k 91586.65k 101272.49k 104146.28k 104830.20k
    camellia-256-ecb 94830.60k 100657.36k 101675.01k 102215.41k 102263.01k
    cast5-cbc 88641.22k 98797.89k 101497.51k 102709.60k 103079.47k
    cast5-cbc 88802.53k 99085.91k 101532.93k 103310.64k 103095.91k
    cast5-cbc 89300.01k 99123.09k 101557.42k 103291.12k 103057.55k
    cast5-cfb 79594.11k 85060.11k 88177.44k 87704.40k 87569.75k
    cast5-ecb 93075.49k 97714.73k 98661.55k 99154.37k 99284.85k
    cast5-ofb 82339.21k 91990.60k 94355.86k 95116.59k 94745.00k
    des-cbc 54665.29k 58597.46k 59436.54k 59893.73k 59979.69k
    des-cbc 54736.58k 58775.42k 59680.45k 59926.95k 59927.63k
    des-cfb 52248.04k 54495.66k 54676.46k 54965.51k 55176.82k
    des-ecb 56751.97k 58724.30k 58939.99k 59370.08k 59492.00k
    des-ede 22415.57k 22924.24k 22908.33k 22991.37k 23060.89k
    des-ede3 22509.25k 22819.68k 22880.24k 22962.94k 22970.37k
    des-ede3-cbc 22369.39k 22981.05k 23009.28k 23123.22k 23121.17k
    des-ede3-cbc 22410.17k 22984.73k 23017.39k 23128.70k 23126.65k
    des-ede3-cfb 21630.08k 22029.85k 22087.00k 22196.48k 22230.73k
    des-ede3-ofb 21817.92k 22493.58k 22579.20k 22714.99k 22737.59k
    des-ede-cbc 22334.14k 22987.54k 23099.51k 23134.87k 23134.87k
    des-ede-cfb 21594.54k 22050.16k 22111.57k 22225.59k 22238.95k
    des-ede-ofb 21592.96k 22501.37k 22590.55k 22725.95k 22745.81k
    des-ofb 52497.27k 57190.87k 58591.55k 58928.63k 59081.03k
    desx-cbc 52693.44k 57307.21k 58950.31k 59622.83k 59738.58k
    rc2-40-cbc 29676.73k 31193.94k 31329.96k 31456.32k 31474.81k
    rc2-64-cbc 29681.75k 31169.80k 31300.69k 31459.75k 31625.50k
    rc2-cbc 29548.44k 31206.85k 31325.27k 31465.91k 31496.73k
    rc2-cbc 29742.81k 31223.95k 31337.22k 31454.61k 31466.60k
    rc2-cfb 28592.34k 29839.00k 30173.58k 30289.17k 30097.41k
    rc2-ecb 30069.50k 31069.65k 31246.64k 31203.57k 31225.49k
    rc2-ofb 29094.87k 30271.68k 30624.28k 30739.18k 30910.42k
    rc4 231364.91k 342538.57k 385894.66k 400376.81k 404290.27k
    rc4-40 230518.43k 344946.90k 386486.37k 400573.39k 404153.28k
    seed-cbc 59950.65k 63472.05k 64228.86k 64585.63k 63731.03k
    seed-cbc 60964.95k 63181.78k 63528.45k 63931.85k 64023.63k
    seed-cfb 60126.29k 64218.33k 64238.59k 65275.72k 66185.33k
    seed-ecb 61352.68k 65383.92k 65355.78k 65613.06k 65440.11k
    seed-ofb 60859.21k 63700.36k 64662.09k 64857.56k 64820.57

  30. #30

    نقل قول: درمورد الگوریتم رمزنگاری

    من اخرش نفهمیدم که برای کار با دیتابیس ایا میشه از الگوریتمهایی مثل RSA,AES استفاده کرد؟و از نظر سرعت تاثیر زیادی نداره؟
    چون نظر اساتید متفاوت است

  31. #31
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    مي بينم كه بين علما دعوا شده!!!!!!!!
    خب نگار خانوم نظرات خودت را هم بنويس!!! شما كه فقط داري سوال مي كني!؟؟؟! نظري حرفي حديثي چيزي هم شما بفرما!!! نتيجه مطالعات خودت چي؟؟! به نظر شما استفاده از AESو DES در ديتابيس مفيده يا نه؟؟؟؟
    اگه يه كم دقت كني مي بيني كه داري دوباره راه را گم مي كني!!!! تمام اينترنت را زير و رو كن! با متخصصين عملي رمز صحبت كن!!! ببين كسي در مورد استفاده از الگوريتم خاصي در داخل ديتابيس يا خارج اون فكري كرده؟؟!؟؟!؟!؟!؟

  32. #32
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: درمورد الگوریتم رمزنگاری

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    من اخرش نفهمیدم که برای کار با دیتابیس ایا میشه از الگوریتمهایی مثل RSA,AES استفاده کرد؟و از نظر سرعت تاثیر زیادی نداره؟
    چون نظر اساتید متفاوت است
    بله
    بنده هم با تحقیقاتی که بعد از اون PM انجام دادم به این نتیجه رسیدم که AES توی این چند ساله خیلی پیشرفت داشته و سرعتش حداقل ۸ برابر شده

  33. #33
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    آقا من يه سوالي كنم همگان روش كار كنيد !! البته راستش جوابشو خودم مي دونم فقط مي خوام يه كار تحقيقي براي بچه هاي گل اين تاپيك باشه!!!!
    سوال من اينه:
    فارغ از هر الگوريتمي (يعني اينكه الگوريتم براي اين سوال من اصلا مهم نيست) شما يك حرفي مثلا "س" را با يك كليد مثلا رشته كليد ما"123" است را رمز كرديم جواب هم يه چيزي ميشه خب
    حالا اگه ما بخواهيم جمله اي مثلا " سلام خاله سوسكه" را رمز كنيم! 3 تا "س" 2 تا "ل" و 2 تا "ه" و 2 تا "ا" داريم!!! آيا همه اينها شبيه به هم يك رشته خروجي مي دهند؟؟؟؟؟
    اگر جوابتون منفيه چرا؟
    اگر جوابتون مثبته چرا؟
    و اگر جوابتون مثبته خب به نظر شما اين باعث كشف ساده تر رمز توسط عنصر مزاحم(دشمن) نمي شود؟؟؟؟ چون وقتي يك رشته تكراري را در پيام رمز مي بيند پس حدس مي زند كه حروف تكراري هستند و با كشف يك حرف تمامي حروف تكرار شده در ان جمله براحتي آب خوردن كشف مي شود!!!!
    خب حالا جوابتون چيه؟ و راه حل؟؟

  34. #34
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

    سوال قشنگیه و منو کنجکاو کرد که :

    معادل رمزنگاری شده کلمه س:
    4U1VjLuQMb7CXvzd2xNriA==
    معادل رمزنگاری شده کلمه سوسک:
    lOKSZXT7ja8NU9GiOeHATlA==

    پس با توجه به پژوهش من این ها خیلی به هم فرق دارند باید بگم که:
    نوع رمز نگاری :این جا گفتم
    کلید عمومی:X!@#$%^&*()_+

    پس با پیدا کردن عناصر تکراری نمیشه پیدا کرد!
    در ضمن اصلا کلید رو از کجا در بیاری

  35. #35
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

    اصلا عناصر مزاحم (دشمن )از کجا می فهمه که الگوریتم رمز نگاری من چی بوده!

  36. #36
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    فرشيد عزيز و دوست داشتني !
    قبل از هر چيز بايد به شما بگم كه بابت پست هايي كه در تاپيك هاي مختلف مي زني ازت خيلي تشكر مي كنم و ممنون! من از شما خيلي چيزها ياد گرفته ام!!!!
    و اما بعد...
    فرشيد جان شما آمدي "سوسك" را رمز كردي و شد :
    lOKSZXT7ja8NU9GiOeHATlA==
    حالا اگر در متن ساده خودت، 10 بار از كلمه سوسك استفاده كني باز هم همه اينها شبيه به هم مي شوند؟؟؟؟؟؟!!! يا باز تفاوت دارند؟؟؟!!!‌
    شما جايگشت و تركيب دوتايي و چندتايي "س" را فقط در نظر نگير!!! فكر كن "س" به تنهايي در متنت بكار رفته!! در ضمن انگليسي را بيشتر دفت كن!! حروف فارسي چون به هم مي چستند تركيب بيشتري دارند!! اما انگليسي ها چون جدا از هم هستند براي بيشتر رمزكننده ها تكي محسوب مي شوند!!!! مثلا "a" !!!!
    در ضمن شما با يك الگوريتم بيتي كار كردي كه با جانشيني بلوك هاي بيتي سروكار دارد!!! همين "س" را اگه الان رمز كردي و شد:
    4U1VjLuQMb7CXvzd2xNriA==
    اگه فردا هم با همين كليد رمز كني باز همين مي شود!! پس فردا هم اگه رمز كني باز همين رشته مي شود!!! همين سوسك را اگر هزار بار ديگر با همين كليد رمز كني همين عبارت مي شود!!! پس اگر رمزشكني اين عبارت را برگرداند در تمامي پيام هاي رمز شما اين رشته را ببيند سريعا بدون محاسبه "سوسك" را جانشين مي كند!!! اين فاجعه است!!!!!!‌
    حالا عمق فاجعه را برايت بيشتر روشن مي كنم!!! (( هر چند شما خودت آدم روشني هستي داداش!))
    از الگوريتم هاي بيتي خارج شو!!! برو سراغ يك الگوريتم نامتقارن جبري با كليد خصوصي مثلا RSA كه امروزه در تمامي نيروهاي مسلح جهان بوفور استفاده مي شود!!‌
    اگر اين روشي كه شما استفاده كردي را نيروهاي مسلح جهان استفاده كنند كه بشمر سه همه اطلاعاتشون روي آبه!!!!
    يك مثال واقعي مي زنم!!! فكر كن ما 100 نفر هستيم و همه ما هم كارمند يك شركت و سازمان!! واحد امور مالي شركت براي همه ما 100 نفر يك حساب اينترنت بانك افتتاح مي كند و مي خواهد توسط ايميل به همه ما 100 نفر ، كلمه عبور اينترنت بانك ما را اطلاع دهد!!! خب فرض مي كنيم كه كارمند بانك بطور پيش فرض براي همه ما 100 نفر كلمه عبور را "1234" گذاشته و به ما گفته كه پس از اولين ورود، خودمان كلمه عبور را به دلخواه عوض كنيم!!! خب امور مالي به همه ما ايميل را بطور رمز شده مي دهد!!!
    حالا سوال و مطلب اصلي اينجاست:
    فكر كن پيام اين است:"همكار عزيز! كلمه عبور اينترنت بانك شما 1234 مي باشد"
    فرض را هم بگذار بر اين كه كارمند امور مالي فرصت و حوصله كافي براي فرستادن تك تك اين ايمل ها ندارد و مي خواهد با يك بار ارسال به همه ما 100 نفر اين پيام ارسال شود!! طبيعتا مجبور است فقط يك بار كليد عمومي تعريف كند!!
    متن رمز شده پيام ساده قبلي اين مشود مثلا:"sdsds232sfgrhgd#cascdfgsd67"
    حالا سوال اين است!! اگر عنصر مزاحم به اين 100 ايميل دسترسي پيدا كند فقط كافي است كه رمز يكي از ايميل ها را بشكند!! چون همه رشته هاي رمز شده شبيه هم هستند با شكستن كردن يك پيام رمز، براحتي 99 تاي ديگه كشف مي شوند!! حتي بدون محاسبه!!!!!!!!
    اين به نظرت فاجعه نيست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ كم از زلزله 10 ريشتري و سونامي ندارد!!!!
    مي داني عمق فاجعه كي بدتر مي شود؟؟؟!!؟!؟ وقتي شما از الگوريتم نامتقارن جبري با كليد خصوصي استفاده كني!!!!!!!!!!
    درضمن تا يادم نرفته بگم كه استفاده از الگوريتم هاي بيتي مثل AES و DES بخاطر طول رشته كليد طولاني در سطح نيروهاي عملياتي نيروهاي مسلح جهان استفاده نمي شود!!!! چون بخاطر سپردن كليد مثلا 56 بيتي DES يا 112 بيتي DES3 يا 128 بيتي و 256 بيتي AES توسط نيروي انساني كار ساده اي نيست!! از طرفي نيروهاي مسلح هم علاقه اي به ذخيره كردن اين كليد در فايل، ديتابيس و حتي روي كاغذ ندارند!!! بنابراين از الگوريتم هاي جبري استفاده مي شود!!!!
    و اما سوالي كه در يكي از پست هات پرسيده بودي!! و آن اينكه عنصر مزاحم(دشمن) اصلا از كجا به الگوريتم شما پي خواهد برد؟!؟
    اينجا هم جواب كاملا شفاف و روشنه!!!
    اول اينكه: رمز شكنهاي خبره در خيلي از موارد اصلا نيازي به دانستن الگوريتم شما ندارند!!!
    دوم اينكه: اصلا مخفي كردن الگوريتم در مراكز امنيتي جهان، مرسوم نيست!!! شما الگوريتم رمزنگاري هر وسيله مخابراتي و جنگ الكترونيكي هر كدام از نيروهاي مسلح را بخواهي مي تواني بدست بياوري!!!‌ مثلا در مورد بي‌سيم‌ها!!! نام كارخانه و مدل هر بي سيمي را خواستي بگو خودم نام الگوريتمش را بهت مي گم!!




  37. #37
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: درمورد الگوریتم رمزنگاری

    اگر الگوریتم chain نباشه مثل cbc و یا ebc بلاک های مساوی نتیجه مساوی میدهند
    تا اونجایی که من اطلاع دارم هم HMAC برای جلوگیری از این موضوع استفاده میشه

    در مورد بیسیم هم در ایران a51 ه که متاسفانه هنوز از a53 بیشتر استفاده میشه
    آخرین ویرایش به وسیله FastCode : سه شنبه 14 شهریور 1391 در 00:24 صبح دلیل: د به ر

  38. #38
    کاربر دائمی آواتار alimanam
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    لندن
    سن
    38
    پست
    1,556

    نقل قول: درمورد الگوریتم رمزنگاری

    با سلام

    به عنوان یک پیشنهاد باید عرض کنم که در ابتدا باید دید این الگوریتم رمزنگاری ( شما بخونین Encrypt & Decrypt ) قراره با چه حجم از داده هایی استفاده بشه ! برای مثال هیچ وقت من ندیدم کسی برای اعتبار سنجی پسورد ورود از الگوریتمهای نامتقارن استفاده بشه ! و به راحتی از الگوریتم MD5 یا مثال هم , اون هم به صورت مقایسه بایت به بایت استفاده میشه نه رشته با رشته !

    در مورد استفاده از الگوریتم های نامتقارن مانند DSA یا RSA یا دیگر الگوریتمهایی از این نوع باید در نظر گرفت که با فرض اینکه حداقل طول کلید 128 بیت رو در نظر گرفتین نمیتونه برای این منظور ( استفاده برای رمزنگاری اطلاعات یک دیتابیس ) بهینه باشه ! چرا ؟ چون به صورت معمول اینگونه الگوریتم ها ( الگوریتم های نامتقارن ) کمی از نظر سرعت العمل با کندی همراه هستن ( این که میگم کند , فکر نکنین زیاد به چشم بیاد ) و هرچه حجم اطلاعات بیشتر باشه این کندی بیشتر خودش رو به رخ میکشه . در ضمن در صورت استفاده از این گونه الگوریتمها برای Decryption اطلاعات حتماً باید از کلید خصوصی استفاده بشه ! و خودتون هم حتما میدونین ریسک اینکه کلید خصوصی لو بره زیاده !

    در مورد الگوریتمهای متقارن مانند AES باید به ضعف همیشگی این گونه الگوریتمها اشاره کرد که با لو رفتن کلیدی که برای این نمونه الگوریتمها در نظر گرفته شده تقریباً کار ساده ایی هستش که به منبع اصلی داده ها برسیم .

    واما پیشنهاد بنده این هستش که شما برای این منظور از همان الگوریتم متقارن AES استفاده کنین و کلیدی که دارین برای این الگوریتم استفاده میکنین رو هم کد کنین ! در نهایت با مبهم سازی سورس کد نهایی میشه تا اندازه ایی اطمینان حاصل کرد البته این اطمینان نسبی هستش و نمیشه بهش به عنوان روش غیرقابل نفوذ نگاه کرد .

    نکته آخر :

    با توجه به کاربرد برنامه شما میشه روش بهتری رو هم پیشنهاد داد .

    موفق باشید./

  39. #39
    کاربر دائمی آواتار Farshid007
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    Karaj
    پست
    1,249

    نقل قول: درمورد الگوریتم رمزنگاری

    اقا عجب بحث داغی شد!
    من زیاد از متقارن پتقارن حالیم نیست!
    من یه کد AES داشتم خواستم اونو تقدیم کنم به ایجاد کننده این تاپیک
    پس من کنار می کشم!

  40. #40
    کاربر دائمی آواتار AmirGhasemi
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    تهران
    پست
    522

    نقل قول: درمورد الگوریتم رمزنگاری

    با سلام و احترام خدمت جناب alimanam
    فكر كنم شما با مفهوم كليد خصوصي زياد آشنا نباشيد!!!
    هيچ جاي دنيا رمز كردن مجدد كليد خصوصي رايج نيست!!! در ضمن obfoscate‌كردن الگوريتم و كد ها هم لازم اصلا نيست!!
    بايد خدمتتون عرض كنم كه الان همه دنيا دارن مي رن دنبال كليد خصوصي!!! نيروهاي مسلح دنيا دارن مي رن دنبال الگوريتم هاي نامتقارن كليد خصوصي!!! بعد شما مي گيد كه كليد خصوصي امنيت نداره؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    اما شما اعلام فرموده بوديد كه با لو رفتن كليد الگوريتم هاي متقارن، پيدا كردن منبع داده كار راحتيه!!! خب داداش جان كليد كه لو بره حتي اگه رمزنگاري در حد بوندسليگا هم كه باشه خب لو ميره!!
    لو رفتن كليد از دايره تفكرات رمز خارجه!! اون كه ديگه جاسوس بازي در اورده يا اهمال كاري و كليد لو رفته ديگه حسابش با كرام الكاتبينه!!!!

صفحه 1 از 2 12 آخرآخر

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

  1. الگوریتم رمزنگاری MD5
    نوشته شده توسط younes-98 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 9
    آخرین پست: پنج شنبه 13 اسفند 1388, 01:15 صبح
  2. الگوریتم رمزنگاری SHA256
    نوشته شده توسط younes-98 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 6
    آخرین پست: سه شنبه 15 اردیبهشت 1388, 05:58 صبح
  3. الگوریتم رمزنگاری Vernam
    نوشته شده توسط saeedIRHA در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 5
    آخرین پست: شنبه 11 آبان 1387, 07:13 صبح
  4. سوال: Encryption/Decryption
    نوشته شده توسط fallah_mojtaba در بخش C#‎‎
    پاسخ: 4
    آخرین پست: یک شنبه 17 شهریور 1387, 22:00 عصر
  5. Encrypt/Decrypt کردن فایل ها
    نوشته شده توسط Delphi-Man در بخش برنامه نویسی در Delphi
    پاسخ: 14
    آخرین پست: شنبه 19 آبان 1386, 03:11 صبح

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

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