PDA

View Full Version : سوال: encrypt و decrypt کردن



zahragh
سه شنبه 17 اردیبهشت 1387, 09:58 صبح
سلام خدمت دوستان عزیز ، کسی میدوونه چطوری میشه یک متن رو درون یک فایل به صورت encript شده save کرد و سپس به صورت decript شده load کرد، اگه کسی میدوونه لطفا به ما هم یه کمکی کنه :متفکر::متفکر:

hdv212
سه شنبه 17 اردیبهشت 1387, 10:27 صبح
با سلام و ضمن خوش آمد گویی به شما دوست تازه وارد.
ابتدا NameSpaceهای زیر رو به سورس فایلت اضافه کن :

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

حالا برای Encrypt کردن از این نمونه کد :

//Encrypt Data To File
FileStream stream = new FileStream("C:\\test.txt", FileMode.OpenOrCreate,FileAccess.Write);
DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider();
cryptic.Key = ASCIIEncoding.ASCII.GetBytes("ABCDEFGH");
cryptic.IV = ASCIIEncoding.ASCII.GetBytes("ABCDEFGH");
CryptoStream crStream = new CryptoStream(stream,cryptic.CreateEncryptor(),Cryp toStreamMode.Write);
byte[] data = ASCIIEncoding.ASCII.GetBytes("Hello World!");
crStream.Write(data,0,data.Length);
crStream.Close();
stream.Close();

و برای Decrypt کردن هم از این نمونه کد :

//Decrypt Data On the Fly and show it To Textbox
if(!File.Exists("C:\\test.txt"))
{
MessageBox.Show("File does not Exist!","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
else
{
FileStream stream = new FileStream("C:\\test.txt", FileMode.Open,FileAccess.Read);
DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider();
cryptic.Key = ASCIIEncoding.ASCII.GetBytes("ABCDEFGH");
cryptic.IV = ASCIIEncoding.ASCII.GetBytes("ABCDEFGH");
CryptoStream crStream = new CryptoStream(stream,cryptic.CreateDecryptor(),Cryp toStreamMode.Read);
StreamReader reader = new StreamReader(crStream);
string data = reader.ReadToEnd();
reader.Close();
stream.Close();
textBox2.Text = data;
}
استفاده کن، موفق باشید.

bluedream3964
سه شنبه 17 اردیبهشت 1387, 10:28 صبح
والله تا اونجایی که من میدونم هر کسی روش خاصی رو برای کد کردن به کار می بره اما فکر کنم شایع ترین روش استفاده از md5 است من خودم هم دارم دنبالش میگردم... اگه کسی کمک کنه ممنون میشم. خودم هم اگه چیزی بیابم می نویسم.

Mahdi.Kiani
سه شنبه 17 اردیبهشت 1387, 11:34 صبح
والله تا اونجایی که من میدونم هر کسی روش خاصی رو برای کد کردن به کار می بره اما فکر کنم شایع ترین روش استفاده از md5 است من خودم هم دارم دنبالش میگردم... اگه کسی کمک کنه ممنون میشم. خودم هم اگه چیزی بیابم می نویسم.

اینی که شما میگین را بهش می گن hash کردن ... و MD5 هم یکی از اوناست . MD =Message Digest = خلاصه پیام..
بیشتر برای این به کار می ره که گیرنده متوجه بشه داده های دریافتی را درست دریافت کرده و یا نه .. به این شکل که داده در طرف فرستنده ، همراه با کد hash اون برای گیرنده فرستاده می شه. حالا گیرنده داده دریافتی را مجددا با همون الگوریتمی که فرستنده فرستاده مقایسه می کنه و کد های hash را با هم مقایسه می کنه. اگه یکی بودن یعنی داده درست اومده و در غیر اسن صورت داده ها اشتباه..
این امر در دانلود فایل ها، بویژه فایل های حساس ( که مثلا نبودن یک بایت اونا موجب از کار افتادن 4 گیگ اطلاعات میشه) به کار میره .. ولی امروزه در مورد پسوردد ها هم زیاد استفاده میشه
الگوریتم های Hash یک طرفه هستند و غالبا غیر قابل باز گشت ( گرچه بعضا تناقضاتی هم پیدا شده)
در مورد MD5 و الگوریتم های hashing دیگه، خود دات نت اونا را فراهم کرده و نیاز نیست که دنبال الگوریتمش بگردین
فقط کافیه توی نت و فکر کنم همین جا هم باشه، سرچ کنین که روش استفاده از اونا را یاد بگیرین
موفق باشید

gdevnb
سه شنبه 17 اردیبهشت 1387, 13:23 عصر
به جای کد کردن بهتره از الگوریتمهای رمزنگاری استفاده بشه.
دقیقاً یه همچین مثالی تو MSDN هست.

zahragh
سه شنبه 17 اردیبهشت 1387, 19:42 عصر
ممنون از همه دوستان من از روش hash کردن و از SHA استفاده کردم و مشکلم حل شد.:لبخند:

public string EncryptSHA(string data)
{

SHA1Managed sham = new SHA1Managed();
Convert.ToBase64String(sham.ComputeHash(Encoding.A SCII.GetBytes(data)));
byte[] enc_data = ASCIIEncoding.ASCII.GetBytes(data);
string enc_str = Convert.ToBase64String(enc_data);

return enc_str;
}

public string DecryptSHA(string data)
{

try
{
byte[] dec_data = Convert.FromBase64String(data.Trim());
string dec_str = ASCIIEncoding.ASCII.GetString(dec_data);
return dec_str;
}
catch
{
return "";

}
}

gdevnb
چهارشنبه 18 اردیبهشت 1387, 09:19 صبح
دوست عزیز این hash نیست.
hash قابل بازگشت نیست.

hassan razavi
چهارشنبه 18 اردیبهشت 1387, 11:08 صبح
http://barnamenevis.org/forum/showthread.php?t=84283&highlight=encrypt

علیرضا مداح
چهارشنبه 18 اردیبهشت 1387, 11:50 صبح
سلام دوست عزیز

hash قابل بازگشت نیست.
البته توجه داشته باشید که این امر در شرایط عادی غیرممکن به نظر می رسد ، ولی باز هم روشهایی همچون Brute-Force برای شکستن Hash وجود دارد که گاهی اوقات از شدت دشواری به سمت غیر ممکن میل میکند و معمولا" اعمال شیوه هایی چون Salted Hash امنیت مقادیر هش شده را بالاتر می برد.

razavi_university
چهارشنبه 18 اردیبهشت 1387, 15:19 عصر
مقاله SaltHash (http://barnamenevis.org/forum/showthread.php?t=14191&highlight=salt+hash)از استاد نصيري

razavi_university
چهارشنبه 18 اردیبهشت 1387, 15:39 عصر
How To: Hash Data with Salt (C#/VB.NET (http://www.obviex.com/samples/hash.aspx)