سلام.دوستان نحوه ی قفل کردن یک فایل در برنامه نویسی سی شارپ به چه صورت است؟ومن الله توفیق
سلام.دوستان نحوه ی قفل کردن یک فایل در برنامه نویسی سی شارپ به چه صورت است؟ومن الله توفیق
آخرین ویرایش به وسیله catgirl : پنج شنبه 23 خرداد 1392 در 12:00 عصر
سلام ، دوست عزیز فکر کنم تابع های زیر بدردت بخوره
private void EncryptFile(string inputFile, string outputFile)
{
try
{
string password = @"myKey123"; UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);
string cryptFile = outputFile;
FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);
FileStream fsIn = new FileStream(inputFile, FileMode.Open);
int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);
fsIn.Close();
cs.Close();
fsCrypt.Close();
}
catch
{
MessageBox.Show("Encryption failed!", "Error");
}
}
private void DecryptFile(string inputFile, string outputFile)
{
{
string password = @"myKey123";
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);
FileStream fsCrypt = new FileStream(inputFile, FileMode.Open);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateDecryptor(key, key),
CryptoStreamMode.Read);
FileStream fsOut = new FileStream(outputFile, FileMode.Create);
int data;
while ((data = cs.ReadByte()) != -1)
fsOut.WriteByte((byte)data);
fsOut.Close();
cs.Close();
fsCrypt.Close();
}
}
سلام
برای پسورد زمانیکه خواستم فقط از عدد استفاده کنم و حتی برا شروع کلمه پسورد چیزی به جر my مینوشتم خطا زیر میداد
specified initialization vector (vi) dose not match the block size for this algoritm
کسی میدونه این خطا واسه چیه
تشکر
سلام . میشه در مورد کد و کارش بیشتر توضیح بدید که دقیقا چه کاری رو انجام میدن؟
اگه یک خورده کد رو تحلیل کنید ممنون میشم.
این روش رمز نگاری Rijndael هست که میگیره فایل رو بر اساس ادویه ای (تو رمزنگاری برای نامفهوم کردن کد ایجاد شده استفاده میشه "تو این کد ازش استفاده نشده" ) که بهش میزنید و رمزی که بهش میدید میگیره فایل رو رمز میکنه ، برای اون دوستمون که با خطا مواجه شدن احتمالا رمزی که دادن طولش کم بوده یا فایلی که قبلا رمز شده رو با پسورد اشتباه داشتن دیکد میکردن
منظور از ادویه نمیدونم چطوری توضیح بدم (مثلا : سلام====>سخخحنئددلکموکموکشا صثضصثم) تو مثال سلام بعد از اضافه کردن ادویه
شرمنده من با RijndaelManaged برنامه ننوشتم ولی با Rijndael نوشتم
طولش رو فکر کنم باید تا 256 بایت باشه دقیقا یادم نیست ولی برای رسیدن به متن اصلی باید از یک کلید استفاده کنید
آخرین ویرایش به وسیله mthreat.info : سه شنبه 04 تیر 1392 در 08:12 صبح
با یکم ور رفتن فهمیدم میشه با PasswordDeriveBytes پسورد رو ادویه زد و بر اساس الگوریتم MD5 و SHA1 هش کرد
من با یکم دست کاری تو کد دوستمون پسورد رو ادویه زدم :d
کد کردن :
OpenFileDialog opaa = new OpenFileDialog();
SaveFileDialog ss = new SaveFileDialog();
opaa.ShowDialog();
ss.ShowDialog();
string password = @"myKey123";
byte[] initVectorBytes = Encoding.ASCII.GetBytes("@1k2c3$4e5x6g7H6");
byte[] saltValueBytes = Encoding.ASCII.GetBytes("vd754#2@");
PasswordDeriveBytes passworda = new PasswordDeriveBytes(
password,
saltValueBytes,
"SHA1",
2);
byte[] keyBytes = passworda.GetBytes(256 / 8);
string cryptFile = ss.FileName;
FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(keyBytes, initVectorBytes),
CryptoStreamMode.Write);
FileStream fsIn = new FileStream(opaa.FileName, FileMode.Open);
int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);
fsIn.Close();
cs.Close();
fsCrypt.Close();
دیکد
OpenFileDialog opaa = new OpenFileDialog();
SaveFileDialog ss = new SaveFileDialog();
opaa.ShowDialog();
ss.ShowDialog();
string password = @"myKey123";
byte[] initVectorBytes = Encoding.ASCII.GetBytes("@1k2c3$4e5x6g7H6");
byte[] saltValueBytes = Encoding.ASCII.GetBytes("vd754#2@");
PasswordDeriveBytes passworda = new PasswordDeriveBytes(
password,
saltValueBytes,
"SHA1",
2);
byte[] keyBytes = passworda.GetBytes(256 / 8);
FileStream fsCrypt = new FileStream(opaa.FileName, FileMode.Open);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateDecryptor(keyBytes, initVectorBytes),
CryptoStreamMode.Read);
FileStream fsOut = new FileStream(ss.FileName, FileMode.Create);
int data;
while ((data = cs.ReadByte()) != -1)
fsOut.WriteByte((byte)data);
fsOut.Close();
cs.Close();
fsCrypt.Close();
تو کد بالا:
SHA1 الگوریتم رمزنگاری SHA1 هست
2 بکار گرفته شده میتونه (تعداد کد کردن) 1 یا 2 کافیه
256 سایز کلید هست که میتونه 128 و 192 هم باشه
initVectorBytes کد IV هست که باید 16 کاراکتر ASCII باشه