PDA

View Full Version : تابع EncryptIt و DecryptIt دارم میخوام ازشون استفاده کنم



behnamkyan
دوشنبه 11 آذر 1392, 02:10 صبح
سلام
یه تابع اینکرایپت دارم



private String EncryptIt(String s, byte[] key, byte[] IV)
{
String result;
RijndaelManaged rijn = new RijndaelManaged();
rijn.BlockSize = 256;
rijn.Mode = CipherMode.CBC;
rijn.Padding = PaddingMode.ANSIX923;
rijn.KeySize = 256;
using (MemoryStream msEncrypt = new MemoryStream())
{
using (ICryptoTransform encryptor = rijn.CreateEncryptor(key, IV))
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(s);
}
}
}
result = System.Convert.ToBase64String(msEncrypt.ToArray()) ;
}
rijn.Clear();
return result;
}


یه تابع دیکرایپت


private String DecryptIt(String s, byte[] key, byte[] IV)
{
String result;
RijndaelManaged rijn = new RijndaelManaged();
using (MemoryStream msDecrypt = new MemoryStream(System.Convert.FromBase64String(s)))
{
using (ICryptoTransform decryptor = rijn.CreateDecryptor(key, IV))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader swDecrypt = new StreamReader(csDecrypt))
{
result = swDecrypt.ReadToEnd();
}
}
}
}
rijn.Clear();
return result;
}


اینارو تو یه فرم لاگین دارم میخوام وقتی با فرم رجیسترم یه یوزر جدید اضافه میکنم که پسوردش روبا تابع EncryptIt رمزنگاری کردم .
وقتی میخوام لاگین کنم چطور باید از تابع DecryptIt استفاده کنم؟؟؟
که پسورد EncryptIt شده رو بخونه؟؟؟
بعدش میخوام با یه gridview میخوام جدول access رو که یوزر و پسورد های رمزنگاری شده رو به صورت درست نمایش بدم؟
گه لازمه فایل Asp مو اپلود کنم بگید
-------------------------------------------------ممنون میشم کمکم کنید:لبخندساده:

EnKamran
دوشنبه 11 آذر 1392, 02:18 صبح
شما دو تابع دارید یکی به رمز در میاره و دومی از رمز خارح میکنه.
خوب همونطور که گفتید زمان ثبت نام شما کلمه عبور رو به رمز تبدیل می کنید و ثبت می کنید توی بانک اطلاعاتی
و زمان لاگین هم همین کلمه عبور کد شده رو واکشی میکنید و تابع دیکد کردن رو صدا میزنبد و مقدار کد شده رو بهش میدید و دیکد رو برمی گردونه
حالا مقدار دیکد شده رو با مقدار وارد شده داخل تکست باکس کلمه عبور مقایسه کنید و یا به هر روش دیگه که انجام میدید عمل احراز حویت رو انجام بدید.

behnamkyan
دوشنبه 11 آذر 1392, 02:31 صبح
راستش ببنید من نمیدونم چطور احراز هویتو انجام بدم
ببنید کدشو دارم یه جورایی براتون پایین میزارم
ببنید من نمیدونم چطور ورودی های تکس باکسمو با تابع دیکرایپت چک کنم
بببنید کد منو
چطور باید مقدار های یوزر و پسوردی که اینکرایپت میشه رو از فرم لاگین دیکرایپت کنم و وقتی احراز شد فرم view من نمایش داده ببشه
کد رو ببنید پایین

public partial class Login : Form
{
string strCon = "Provider=Microsoft.jet.OLEDB.4.0;" + "Data Source=D:\\DBA1.mdb";
public Login()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
byte[] rijnKey = Encoding.ASCII.GetBytes("abcdefg_abcdefg_abcdefg_abcdefg_");
byte[] rijnIV = Encoding.ASCII.GetBytes("abcdefg_abcdefg_abcdefg_abcdefg_");
View f = new View();
if (textBox1.Text == "" && textBox2.Text == "")
{

MessageBox.Show("Please Fill", "Error");
}
else
if (Find(textBox1.Text) && Find1(EncryptIt(textBox2.Text, rijnKey, rijnIV)))
{
this.Hide();
f.ShowDialog();
this.Hide();
}
else
MessageBox.Show("User Or Pass Misstak","ERROR");



}

private void button2_Click(object sender, EventArgs e)
{
DialogResult res = new DialogResult();
res =PersianMessageBox.MessageBox.Show("کاربر گرامی \n\n آیا میخواهید خارج شوید؟؟", "!!توجه",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (res == DialogResult.Yes)
Close();
}

private void label3_Click(object sender, EventArgs e)
{
Application.Exit();
}
private bool Find(string test)
{

string strSql;
OleDbConnection Con = new OleDbConnection(strCon);
Con.Open();
strSql = "Select us From [up] Where us Like '%" + test + "%'";
OleDbDataAdapter da = new OleDbDataAdapter(strSql, Con);
DataSet ds = new DataSet();
da.Fill(ds, "up");
return ds.Tables[0].Rows.Count > 0;

}
private bool Find1(string test)
{

string strSql;
OleDbConnection Con = new OleDbConnection(strCon);
Con.Open();
strSql = "Select ps From [up] Where ps Like '%" + test + "%'";
OleDbDataAdapter da = new OleDbDataAdapter(strSql, Con);
DataSet ds = new DataSet();
da.Fill(ds, "up");
return ds.Tables[0].Rows.Count > 0;

}
private String EncryptIt(String s, byte[] key, byte[] IV)
{
String result;
RijndaelManaged rijn = new RijndaelManaged();
rijn.BlockSize = 256;
rijn.Mode = CipherMode.CBC;
rijn.Padding = PaddingMode.ANSIX923;
rijn.KeySize = 256;
using (MemoryStream msEncrypt = new MemoryStream())
{
using (ICryptoTransform encryptor = rijn.CreateEncryptor(key, IV))
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(s);
}
}
}
result = System.Convert.ToBase64String(msEncrypt.ToArray()) ;
}
rijn.Clear();
return result;
}

private String DecryptIt(String s, byte[] key, byte[] IV)
{
String result;
RijndaelManaged rijn = new RijndaelManaged();
using (MemoryStream msDecrypt = new MemoryStream(System.Convert.FromBase64String(s)))
{
using (ICryptoTransform decryptor = rijn.CreateDecryptor(key, IV))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader swDecrypt = new StreamReader(csDecrypt))
{
result = swDecrypt.ReadToEnd();
}
}
}
}
rijn.Clear();
return result;
}

}
}

behnamkyan
دوشنبه 11 آذر 1392, 02:32 صبح
راستش ببنید من نمیدونم چطور احراز هویتو انجام بدم
ببنید کدشو دارم یه جورایی براتون پایین میزارم
ببنید من نمیدونم چطور ورودی های تکس باکسمو با تابع دیکرایپت چک کنم
بببنید کد منو
چطور باید مقدار های یوزر و پسوردی که اینکرایپت میشه رو از فرم لاگین دیکرایپت کنم و وقتی احراز شد فرم view من نمایش داده ببشه
کد رو ببنید پایین

public partial class Login : Form
{
string strCon = "Provider=Microsoft.jet.OLEDB.4.0;" + "Data Source=D:\\DBA1.mdb";
public Login()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
byte[] rijnKey = Encoding.ASCII.GetBytes("abcdefg_abcdefg_abcdefg_abcdefg_");
byte[] rijnIV = Encoding.ASCII.GetBytes("abcdefg_abcdefg_abcdefg_abcdefg_");
View f = new View();
if (textBox1.Text == "" && textBox2.Text == "")
{

MessageBox.Show("Please Fill", "Error");
}
else
if (Find(textBox1.Text) && Find1(EncryptIt(textBox2.Text, rijnKey, rijnIV)))
{
this.Hide();
f.ShowDialog();
this.Hide();
}
else
MessageBox.Show("User Or Pass Misstak","ERROR");



}

private void button2_Click(object sender, EventArgs e)
{
DialogResult res = new DialogResult();
res =PersianMessageBox.MessageBox.Show("کاربر گرامی \n\n آیا میخواهید خارج شوید؟؟", "!!توجه",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (res == DialogResult.Yes)
Close();
}

private void label3_Click(object sender, EventArgs e)
{
Application.Exit();
}
private bool Find(string test)
{

string strSql;
OleDbConnection Con = new OleDbConnection(strCon);
Con.Open();
strSql = "Select us From [up] Where us Like '%" + test + "%'";
OleDbDataAdapter da = new OleDbDataAdapter(strSql, Con);
DataSet ds = new DataSet();
da.Fill(ds, "up");
return ds.Tables[0].Rows.Count > 0;

}
private bool Find1(string test)
{

string strSql;
OleDbConnection Con = new OleDbConnection(strCon);
Con.Open();
strSql = "Select ps From [up] Where ps Like '%" + test + "%'";
OleDbDataAdapter da = new OleDbDataAdapter(strSql, Con);
DataSet ds = new DataSet();
da.Fill(ds, "up");
return ds.Tables[0].Rows.Count > 0;

}
private String EncryptIt(String s, byte[] key, byte[] IV)
{
String result;
RijndaelManaged rijn = new RijndaelManaged();
rijn.BlockSize = 256;
rijn.Mode = CipherMode.CBC;
rijn.Padding = PaddingMode.ANSIX923;
rijn.KeySize = 256;
using (MemoryStream msEncrypt = new MemoryStream())
{
using (ICryptoTransform encryptor = rijn.CreateEncryptor(key, IV))
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(s);
}
}
}
result = System.Convert.ToBase64String(msEncrypt.ToArray()) ;
}
rijn.Clear();
return result;
}

private String DecryptIt(String s, byte[] key, byte[] IV)
{
String result;
RijndaelManaged rijn = new RijndaelManaged();
using (MemoryStream msDecrypt = new MemoryStream(System.Convert.FromBase64String(s)))
{
using (ICryptoTransform decryptor = rijn.CreateDecryptor(key, IV))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader swDecrypt = new StreamReader(csDecrypt))
{
result = swDecrypt.ReadToEnd();
}
}
}
}
rijn.Clear();
return result;
}

}
}

EnKamran
دوشنبه 11 آذر 1392, 02:39 صبح
دوست من این کدهایی که شما نوشتید مال Windows Form میشه نه ASP.NET اینجا تالار ASP.NET هست.
الان توی کدهای شما من نگاه کردم که همه چیز درست بود. مشکلی ندیدم.

behnamkyan
دوشنبه 11 آذر 1392, 02:44 صبح
ای بابا شرمنده ندیدم تالار Windows Form رو
تازه واردم
مشکل داره وقتی یوزر پس رو میزنم اروری که طراحی کردم میده
MessageBox.Show("User Or Pass Misstak","ERROR");
بعدش تو این خطی که داره احرازهویت انجام میده

byte[] rijnKey = Encoding.ASCII.GetBytes("abcdefg_abcdefg_abcdefg_a bcdefg_");
byte[] rijnIV = Encoding.ASCII.GetBytes("abcdefg_abcdefg_abcdefg_a bcdefg_");
View f = new View();
if (textBox1.Text == "" && textBox2.Text == "")
{

MessageBox.Show("Please Fill", "Error");
}
else
if (Find(textBox1.Text) && Find1(EncryptIt(textBox2.Text, rijnKey, rijnIV)))
{
this.Hide();
f.ShowDialog();
this.Hide();
}
else
MessageBox.Show("User Or Pass Misstak","ERROR");



}

نباید تابع DecryptIt رو صدا بزنیم؟

EnKamran
دوشنبه 11 آذر 1392, 02:47 صبح
خیر شما یا باید کلمه عبور توی جدول رو دیکد کنید یا کلمه عبور وارد شده توسط کاربر توی تکست باکس رو.
شما اینجا دارید درست عمل میکنید (سر سری دیدم کدها رو) ولی یک بریک پوینت بگذارید ببینید مقادیری که تبدیل میشن درست هستن یا خیر

behnamkyan
دوشنبه 11 آذر 1392, 02:53 صبح
چطوری
میشه دستور احراز هویتشو برام بنویسید اینجا...!

EnKamran
دوشنبه 11 آذر 1392, 03:18 صبح
شما خودتون دارید همین احراز هویت رو انجام میدید خوب. ببینید
اینجا دارید نام کاربری و کلمه عبور رو میگیرید و به توابع خودشون میفرسنید :
Find(textBox1.Text) && Find1(EncryptIt(textBox2.Text, rijnKey, rijnIV))
و درون توابع Find و Find1 دارید چک میکنید که همچین نام کاربری و کلمه عبوری وجود داره یا نه.

behnamkyan
دوشنبه 11 آذر 1392, 11:21 صبح
خوب انجام نمیده!
یعنی احراز نمیشه!
و دستور
else
MessageBox.Show("User Or Pass Misstak","ERROR");


اجرا میکنه! پیدا نمیکنه یوزر پسورد رو!

EnKamran
دوشنبه 11 آذر 1392, 12:00 عصر
پس تمام کارها به درستی داره انجام میشه و فقط پیدا نمیکنه. شما بگرد ببین مقادیری که برمیگردونه چیا هستن. گفتم خدمتتون که یک بریک پوینت قرار برید توی روال کلیک شدن دکمه و چک کنید

behnamkyan
دوشنبه 11 آذر 1392, 12:20 عصر
ممنون میشم اینی که میگید رو برام بنویسید!
فایل پروژه رو براتون فرستادم!
ایمیلتونو چک کنید!
د.وست عزیز مبتدی! نمیدونم چه بکنم!
هرچیزی که میگید رو بنویسید
*فایل براتون فرستاد*

EnKamran
دوشنبه 11 آذر 1392, 14:16 عصر
برای ایمیل من چیزی نیومده استاد