PDA

View Full Version : تبدیل کاراکترهای غیر مجاز یک عبارت !



once4ever
شنبه 27 اسفند 1384, 11:43 صبح
سلام
من یک تابع دارم که string میگیره و اونو رمزگزاری میکنه و باینری برمیگردونه
ومیخوام این عبارتو تا بانک اکسس insert کنم
گاهی مواقع خطا میگیره و من کاراکترهای ' و / رو به چیز دیگه تبدیل کردم (replace )و درست شده.
ولی بازم گاهی گیر میده ولی نمیدونم با چه کاراکتری مشکل داره!
آیا این راه حل منطقی داره یا اینکه همه کاراکترهارو باید replace کنم؟
ممنون

habedijoo
شنبه 27 اسفند 1384, 12:35 عصر
دوست عزیز برای رمزگزاری خود دات نت کلاسهایی داره که میتونی از اونا استفاده کنی . این توابع یک کلید میگیرن و با اون رشته رو برات رمز میکنن و هنگام باز کردنش هم فقط با اون کلید میتونید رمز گشایی کنید .

یه سرچ کوچولو توی گوگل بزنید پیدا می کنید .

once4ever
شنبه 27 اسفند 1384, 12:48 عصر
اما مشکل من رمزگذاری نیست!!
من رمزو میهوام بذارم تو بانک با دستور INSERT ولی بعضی وقتها خطا میگیره و تنها دلیلش هم اون عبارت رمز شده هست که فکر میکنم از بعضی کاراکترهاش خطا میگیره.
مثلا اگه عبارتم ' داشته باشه - از دستور اینسرت خطا میگیره و من این کارکتر رو با چیز دیگه عوض کردم و درست شد. ولی باز از چیزهای دیگه خطا میگیره!
(ازکلاسی استفاده کردم که یک کلید میگیره و رمزگذاری میکنه )

habedijoo
شنبه 27 اسفند 1384, 15:32 عصر
ببین دوست عزیز مثلا وقتی کاراکتر ' توی رشتت باشه ساختار دستور Insert بهم میخوره . در واقع کامپایلر فکر میکنه دستور تمام شده . خوب باز هم ممکنه کاراکترهایی توی رشتت باشه که با کاراکترهای رزرو شده زبان برنامه نویسیت یکی دربیاد . برای اینکار تو اول باید تمام کاراکتر ها رو ( فکر کنم بصورت اسکی ) بررسی کنی و آنهایی رو که با کاراکترهای رزرو شده یکی هستند جایگزین کنی .

ولی من فکر کنم اشتباه شما یه چیز دیگست . فکر کنم شما رشته رمز شده رو عیننا بدست میاری و بعد اونو توی دستور Insert قرار میدی . برگشت تابع رمزگزاریت رو توی Insert بزار تا دیگه به اشتباه بر نخوری .

once4ever
شنبه 27 اسفند 1384, 17:38 عصر
(خوب منم همینو گفتم !!! یه سری کاراکتر که دستور INSERT رو خراب میکنه)
از قسمت دوم حرفت هیچی نفهمیدم

string endpassword;
EncodingClass myclass=new EncodingClass();
endpassword = myclass.encryptedtxt;
فرض کن اینجوری هست و داخل کلاس Encodingclass هم متغیری اینجوری هست:

this.encryptedtxt= new string(asciiChars);

SalarSoft
شنبه 27 اسفند 1384, 20:36 عصر
می تونید از " استفاده کنید



insert into table ("i can't see")



و همچنین در SQLServer


insert into table ("i can't see ""you"" mss J.")

once4ever
شنبه 27 اسفند 1384, 22:51 عصر
اگه مشکل من فقط ' بود که سوال نمیکردم ;)

dot_net_lover2
یک شنبه 28 اسفند 1384, 12:09 عصر
به نظر من اگر جزوه آقای نصیری را در مورد Encryption مطالعه کنید هم به راحتی میتوانید داده های مورد نیاز خود را Hash کنید و نیز به راحتی میتونید داده Hash شده را در DB ذخیره کنید.

اینم یک Sample Code


using System.Data.SqlClient;
using System.Security.Cryptography;

clsCrypt cr = new clsCrypt();
byte[] hashedByte = new byte[16];
hashedByte = cr.computeMD5Hash(TextBox2.Text);
SqlConnection cn = new SqlConnection(cnStr);
string cmd = "insert into Users(UserName,Password,AccessLevel) values (N'"+TextBox1.Text+"',@pass,N'"+accessLevel+"')";
SqlCommand sqlcmd = new SqlCommand(cmd,cn);
sqlcmd.Parameters.Add(new SqlParameter("@pass",SqlDbType.Binary)).Value = hashedByte;
cn.Open();
sqlcmd.ExecuteNonQuery();
cn.Close();

کلاس clsCrypt را هم ضمیمه کردم.

once4ever
یک شنبه 28 اسفند 1384, 12:44 عصر
ممنون
حتما چک میکنم

once4ever
چهارشنبه 02 فروردین 1385, 18:34 عصر
اصلا کار با encrypt هارو بلد نیستم. :(
با توجه به کدبالا چجوری میتونم محتوای hashedByte رو ببینم (مثلا تو یک تکست باکس)
من میخوام به بانک اکسس اضافه کنم. میشه کد مربوط با اونو بدید.
ممنون

razavi_university
پنج شنبه 03 فروردین 1385, 09:53 صبح
اقا این جزوه آقای نصیری را در مورد Encryption رو از کجا میشه گیر آورد؟؟؟؟