سلام دوستان
من اطلاعاتم رو اینکریپت شده در بانک ذخیره می کنم
الان وقتی SELECT می کنم اطلاعات اینکریپت تو دیتاگرید نمایش داده میشه
چه طوری میشه اطلاعات رو به طور صحیح نمایش داد
ممنون
سلام دوستان
من اطلاعاتم رو اینکریپت شده در بانک ذخیره می کنم
الان وقتی SELECT می کنم اطلاعات اینکریپت تو دیتاگرید نمایش داده میشه
چه طوری میشه اطلاعات رو به طور صحیح نمایش داد
ممنون
اگر یک خروجی داری باید متن کد شدهت رو بفرستی برای دیکد تا برات دیکد کنه بعد نمایش بده اگر هم بیشتر از یک خروجی هست که با foreach باید بازم تک تک بفرستی برای دیکد (هش ها برگشتی نیستن مثل SHA1, MD5 و ... هش ها برای مقایسه استفاده میشن)
میشه کمی بیشتر کمکم کنید ؟
این کد encrypt و decrypt کردنمه
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
namespace coding
{
class secur
{
public Rijndael RJ = Rijndael.Create();
public MD5CryptoServiceProvider MD = new MD5CryptoServiceProvider();
private byte[] MD5Hash(string Value)
{
return MD.ComputeHash(ASCIIEncoding.ASCII.GetBytes(Value) );
}
public string Encrypt_Text(string Text_TO_Encrypt, string Key)
{
RJ.Key = MD5Hash(Key);
RJ.Mode = CipherMode.ECB;
byte[] To_Encrypt = Encoding.UTF8.GetBytes(Text_TO_Encrypt);
return Convert.ToBase64String(RJ.CreateEncryptor().Transf ormFinalBlock(To_Encrypt, 0, To_Encrypt.Length));
}
public string Decrypt_Text(string Encrypted_Text, string Key)
{
try
{
RJ.Key = MD5Hash(Key);
RJ.Mode = CipherMode.ECB;
byte[] To_Decrypt = Convert.FromBase64String(Encrypted_Text);
return ASCIIEncoding.UTF8.GetString(RJ.CreateDecryptor(). TransformFinalBlock(To_Decrypt, 0, To_Decrypt.Length));
}
catch (Exception)
{
throw new ArgumentException("Input key is invalid!", "Key");
}
}
}
}
و این هم کد نمایشم
DataSet ds2 = new DataSet();
OleDbDataAdapter adap2 = new OleDbDataAdapter("select * from dadeha where typs='2' and shenase='" + shenase + "'", con);
adap2.Fill(ds2, "dadeha");
dataGridView2.DataSource = ds2.Tables["dadeha"];
حالا چه طور اطلاعات رو decrypt کنم ؟
یکی بیاد کمک
من دستور foreach چه طور واسه تمام سطرهای دیتاگرید بنویسم که دیکد کنه ؟؟؟؟
DataSet ds2 = new DataSet();
OleDbDataAdapter adap2 = new OleDbDataAdapter("select * from dadeha where typs='2' and shenase='" + shenase + "'", con);
adap2.Fill(ds2, "dadeha");
foreach (DataRow dtrow in ds2.Tables["dadeha"].Rows)
{
dtrow["Column Name"] = Secure.Decrypt_Text(dtrow["Column Name"].ToString(), "key");
}
dataGridView1.DataSource = ds2.Tables["dadeha"];
البته فرض کردم کلاس و یا متدها رو استاتیک کردید.
اگر همه ی فیلدهای بانکم بود باید برای هر فیلد
dtrow["Column Name"] = Secure.Decrypt_Text(dtrow["Column Name"].ToString(), "key");
این کد رو بنویسم ؟
این کد فقط یک فیلد رو دیکریپت می کنه من میخوام کل فیلدهای جدول دیکریپت بشه
چه بلایی سرش بیارم ؟
فکر کنم باید دیتاتیبل بذارم اما نمیدونم چه جور
کمک
بنظر من از Linq استفاده کن خیلی راحت تره هم میتونی قبل از اجرا ببینی خطای نوشتاری نداری هم میتونی با منوی باز شو ایده بگیری آموزش هم تا دلت بخواد هست
حوصله نداشتم بر اساس کد شما بگیرم با linq بنویسم بخاطر همین یه نمونه کد میزارم برای اینکه درک کنید چطور میشه فیلد های خاص رو نمایش داد و چطوری از یه فیلد ها استفاده کرد ویرایش با خودتون
DataClasses1DataContext dblq = new DataClasses1DataContext(ME.constring);
var query = from allfild in dblq.Alert
select new { allfild.textbody, allfild.Subject, allfild.Name, allfild.email };
foreach (var item in query)
{
label1.textbody="درحال ارسال به :"+ item.Name+ " " + item.email ;
}
;dataGridView1.DataSource = query
تو کد بالاDataClasses1DataContext dblq = new DataClasses1DataContext(ME.constring);برای تعریف محل واختصاص دادن بانک هست
var query = from allfild in dblq.Alertفکر کنید شما 20 تا فیلد دارید ولی فقط تعداد محدودی را میخواهید با کد بالا میتوانید فیلد های مورد نظر خود را به ترتیبی که میخواهید نمایش داده شود انتخاب کنید
select new { allfild.textbody, allfild.Subject, allfild.Name, allfild.email };
foreach (var item in query)
{
label1.textbody="درحال ارسال به :"+ item.Name+ " " + item.email ;
}
یک حلقه برای پیمایش جدول و انتساب انها به آبجکت ( کد بالا وقتی استفاده میشد با اینترنت در تماس بود و منتظر نتیجه پس وقفه ی کافی برای نمایش اطلاعات را داشت )
;dataGridView1.DataSource = queryنمایش کل اطلاعات انتخابی و به ترتیب نوشته شده در dataGridView نمایش داده میشود
خیلی ممنون
اما بانک من اکسسه لینک چه طور دیگه به کار میاد ؟؟؟
من فقط یک سوال پرسیدم اونم اینکه کد زیر برای دیکریپت کردن یک فیلد به کار میره . چه طور با همین سم خط واسه کل فیلدها این کار رو انجام بدم
foreach (DataRow dtrow in ds2.Tables["dadeha"].Rows)
{
dtrow["Column Name"] = Secure.Decrypt_Text(dtrow["Column Name"].ToString(), "key");
}
foreach (DataRow dtrow in ds2.Tables["dadeha"].Rows)
{
for(i=0;i<n;i++)
dtrow[i] = Secure.Decrypt_Text(dtrow[i].ToString(), "key");
}
به جاي n تعداد column ها رو بزار