PDA

View Full Version : نمایش داده های دکریپت شده در دیتاگرید



programerinfonet
شنبه 08 تیر 1392, 15:59 عصر
سلام دوستان
من اطلاعاتم رو اینکریپت شده در بانک ذخیره می کنم
الان وقتی SELECT می کنم اطلاعات اینکریپت تو دیتاگرید نمایش داده میشه
چه طوری میشه اطلاعات رو به طور صحیح نمایش داد
ممنون

mthreat.info
شنبه 08 تیر 1392, 18:03 عصر
اگر یک خروجی داری باید متن کد شدهت رو بفرستی برای دیکد تا برات دیکد کنه بعد نمایش بده اگر هم بیشتر از یک خروجی هست که با foreach باید بازم تک تک بفرستی برای دیکد (هش ها برگشتی نیستن مثل SHA1, MD5 و ... هش ها برای مقایسه استفاده میشن)

programerinfonet
شنبه 08 تیر 1392, 21:31 عصر
میشه کمی بیشتر کمکم کنید ؟
این کد 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 کنم ؟

programerinfonet
شنبه 08 تیر 1392, 23:36 عصر
یکی بیاد کمک
من دستور foreach چه طور واسه تمام سطرهای دیتاگرید بنویسم که دیکد کنه ؟؟؟؟

Mahmoud.Afrad
یک شنبه 09 تیر 1392, 00:00 صبح
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"];

البته فرض کردم کلاس و یا متدها رو استاتیک کردید.

programerinfonet
یک شنبه 09 تیر 1392, 00:10 صبح
اگر همه ی فیلدهای بانکم بود باید برای هر فیلد
dtrow["Column Name"] = Secure.Decrypt_Text(dtrow["Column Name"].ToString(), "key");
این کد رو بنویسم ؟

programerinfonet
یک شنبه 09 تیر 1392, 00:54 صبح
این کد فقط یک فیلد رو دیکریپت می کنه من میخوام کل فیلدهای جدول دیکریپت بشه
چه بلایی سرش بیارم ؟
فکر کنم باید دیتاتیبل بذارم اما نمیدونم چه جور
کمک

mthreat.info
یک شنبه 09 تیر 1392, 01:09 صبح
بنظر من از Linq استفاده کن خیلی راحت تره هم میتونی قبل از اجرا ببینی خطای نوشتاری نداری هم میتونی با منوی باز شو ایده بگیری آموزش هم تا دلت بخواد هست

mthreat.info
یک شنبه 09 تیر 1392, 01:44 صبح
حوصله نداشتم بر اساس کد شما بگیرم با 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
select new { allfild.textbody, allfild.Subject, allfild.Name, allfild.email }; فکر کنید شما 20 تا فیلد دارید ولی فقط تعداد محدودی را میخواهید با کد بالا میتوانید فیلد های مورد نظر خود را به ترتیبی که میخواهید نمایش داده شود انتخاب کنید

foreach (var item in query)
{
label1.textbody="درحال ارسال به :"+ item.Name+ " " + item.email ;
}
یک حلقه برای پیمایش جدول و انتساب انها به آبجکت ( کد بالا وقتی استفاده میشد با اینترنت در تماس بود و منتظر نتیجه پس وقفه ی کافی برای نمایش اطلاعات را داشت )

;dataGridView1.DataSource = query نمایش کل اطلاعات انتخابی و به ترتیب نوشته شده در dataGridView نمایش داده میشود

programerinfonet
یک شنبه 09 تیر 1392, 08:37 صبح
خیلی ممنون
اما بانک من اکسسه لینک چه طور دیگه به کار میاد ؟؟؟

من فقط یک سوال پرسیدم اونم اینکه کد زیر برای دیکریپت کردن یک فیلد به کار میره . چه طور با همین سم خط واسه کل فیلدها این کار رو انجام بدم

foreach (DataRow dtrow in ds2.Tables["dadeha"].Rows)
{
dtrow["Column Name"] = Secure.Decrypt_Text(dtrow["Column Name"].ToString(), "key");
}

hamid_hr
یک شنبه 09 تیر 1392, 09:32 صبح
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 ها رو بزار

programerinfonet
یک شنبه 09 تیر 1392, 09:41 صبح
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 ها رو بزار

جواب نداد
یهنی هیچ سطری تو دیتاگرید نیومد