m.h.movahedi
پنج شنبه 20 اسفند 1394, 05:22 صبح
سلام
من به مباحث رمز نگاری آشنا نیستم و حالا باید یک فایل رو کد و دیکد کنم. با جستجو در این سایت و سایر سایت ها تصمیم گرفتم از rijendael استفاده کنم.
قراره یک آرایه از بایت ها در یک فایل به صورت کد نوشته بشه و سپس قابل بازیابی باشه. مشکل اصلی اینه که این آرایه ممکنه خیلی بزرگ باشه و ایجاد یک آرایه متناظر کد شده باعث خطا بشه( حافظه کافی نباشه) برای همین تصمیم دارم به جای کد و دیکد کردن کل آرایه، به صورت بلوک، بلوک آرایه رو بخونم و کد یا دیکد کنم و در محل قبلی بنویسم.
برای همین از حالت ECB استفاده می کنم. در این حالت به IV نیاز نیست. از اونجایی که فقط یک دسترسی مجاز(رمز عبور) وجود خواهد داشت فکر نمی کنم این مشکل ساز باشه(درسته؟ آیا میشه برای این کاربرد از این الگوریتم با این شرایط استفاده کرد)
مشکل بعدی اینه که در این حالت padding عمل نمی کنه و کد زیر با حالت های مختلف padding خطا میده
List<byte> result = new List<byte>();
RijndaelManaged rijendael = new RijndaelManaged();
//
//rijendael.BlockSize = 256;
rijendael.Mode = CipherMode.ECB;
rijendael.Key = key;
//rijendael.Padding = PaddingMode.Zeros ;
//
ICryptoTransform crypto = rijendael.CreateEncryptor();
//
byte[] helper;
for (int i = 0; i < data.Length; i += rijendael.BlockSize)
{
helper = crypto.TransformFinalBlock(data, i, rijendael.BlockSize);
result.AddRange(helper);
}
کسی میتونه در مورد صحیح یاغلط بودن اینکار یا اشکال کد توضیحی بده؟
تشکر
من به مباحث رمز نگاری آشنا نیستم و حالا باید یک فایل رو کد و دیکد کنم. با جستجو در این سایت و سایر سایت ها تصمیم گرفتم از rijendael استفاده کنم.
قراره یک آرایه از بایت ها در یک فایل به صورت کد نوشته بشه و سپس قابل بازیابی باشه. مشکل اصلی اینه که این آرایه ممکنه خیلی بزرگ باشه و ایجاد یک آرایه متناظر کد شده باعث خطا بشه( حافظه کافی نباشه) برای همین تصمیم دارم به جای کد و دیکد کردن کل آرایه، به صورت بلوک، بلوک آرایه رو بخونم و کد یا دیکد کنم و در محل قبلی بنویسم.
برای همین از حالت ECB استفاده می کنم. در این حالت به IV نیاز نیست. از اونجایی که فقط یک دسترسی مجاز(رمز عبور) وجود خواهد داشت فکر نمی کنم این مشکل ساز باشه(درسته؟ آیا میشه برای این کاربرد از این الگوریتم با این شرایط استفاده کرد)
مشکل بعدی اینه که در این حالت padding عمل نمی کنه و کد زیر با حالت های مختلف padding خطا میده
List<byte> result = new List<byte>();
RijndaelManaged rijendael = new RijndaelManaged();
//
//rijendael.BlockSize = 256;
rijendael.Mode = CipherMode.ECB;
rijendael.Key = key;
//rijendael.Padding = PaddingMode.Zeros ;
//
ICryptoTransform crypto = rijendael.CreateEncryptor();
//
byte[] helper;
for (int i = 0; i < data.Length; i += rijendael.BlockSize)
{
helper = crypto.TransformFinalBlock(data, i, rijendael.BlockSize);
result.AddRange(helper);
}
کسی میتونه در مورد صحیح یاغلط بودن اینکار یا اشکال کد توضیحی بده؟
تشکر