PDA

View Full Version : سوال: مشکل با Binary



ali-a2
شنبه 03 تیر 1391, 17:34 عصر
با سلام

میخواستم بدونم چجوری میشه یه متن مثل یه پسوورد تو یه فایل Text باشه بعد ولی فرمت اون چیزی به جز Txt باشه ، بعد کاربر یه بار اون پسوورد رو وارد کنه ، دفعه های بعد خود برنامه بره با اون فایل Text مطابقت بده اگه درست بود مثلا یه دستور اجرا کنه ، نمیدونم چجوری باید از باینری استفاده کنم ، ممنون میشم کمکم کنید
سرچ کردم ولی چیزی که کمکم کنه رو پیدا نکردم



با تشکر

just4froum
شنبه 03 تیر 1391, 18:05 عصر
خوب ببینید اگر فایل متنی در حالت ascii ذخیره بشه هر بایت نشان دهنده کد یک کارکتر هست. مثلا 65 مال حرف A هست.

خوب حالا کاربر رمز خود رو میزنه و شما مثلا(در ساده ترین صورت) میاید از تمام بایت ها 12 تا کم می کنید و اونو ذخیره می کنید. حالا اگر اون فایل رو با نوت پد باز کنند چیز های دیگری نشان می دهد ولی برنامه شما هر وقت بخواد میاد اون فایل رو بایت به بایت می خونه بعد به هر بایت 12 تا اضافه می کنه و بعد با chr تبدیلش می کنه به کد مورد نظر .

ali-a2
شنبه 03 تیر 1391, 18:09 عصر
واقعا ممنون دادا فقط یه چی ، من یه مقدار آماتورم میشه با یه مثال بگین ؟

اصلا چجوری میشد که یه Textbox رو مساوی با یه فایل تکست قرار داد ؟ همونجوری که تو پست اول گفتم(برای یک بار فقط وارد شه)

just4froum
شنبه 03 تیر 1391, 19:05 عصر
بفرمایید البته این روشی که در بالا گفتم نیست . اونم الان می گذارد .

در این روش که کدشو در زیر می گذارم دو تا بایت 255 و 254 به اول فایل اضافه می کنیم این کار باعث میشه فرمت فایل ذخیره شده Unicode بشه که نکته انحرافیشه.
:شیطان:
Private Sub Command1_Click()
Dim x As Long

Open "C:\pass" For Output As 1 ' Delete File
Close #1

Open "C:\pass" For Binary As 1

Put #1, , 255
Put #1, , 254

For x = 1 To Len(Text1.Text)
Put #1, , Asc(Mid(Text1.Text, x, 1))
Next x

Close #1
End Sub


Private Sub Command2_Click()
Dim x As Long, m As Byte
Open "C:\pass" For Binary As 1

For x = 3 To FileLen("C:\pass")
Get #1, x, m
Text2.Text = Text2.Text & Chr(m)
Next x

Close #1
End Sub

just4froum
شنبه 03 تیر 1391, 19:22 عصر
بفرمایید این هم حالت دوم :

Private Sub Command1_Click()
Dim x As Long, byt As Integer

Open "C:\pass" For Output As 1 ' Delete File
Close #1

Open "C:\pass" For Binary As 2
For x = 1 To Len(Text1.Text)

byt = Asc(Mid(Text1.Text, x, 1)) + 78
If byt > 255 Then byt = byt - 255
Put #2, x, CByte(byt)

Next x

Close #2
End Sub


Private Sub Command2_Click()
Dim x As Long, m As Byte
Open "C:\pass" For Binary As 1

For x = 1 To FileLen("C:\pass")
Get #1, x, m
If m <= 77 Then
m = m + 255 - 78
Else
m = m - 78
End If
Text2.Text = Text2.Text & Chr(m)
Next x

Close #1
End Sub

ali-a2
شنبه 03 تیر 1391, 19:38 عصر
خــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــیلی ممنون

بعدش دادا یه سوال !

دیگه فرم موقع لود نباید چک کنه ببینه این فایل هس یا نه ؟

یه سوال دیه : اون کامند 2 چیه ؟؟

just4froum
شنبه 03 تیر 1391, 20:28 عصر
دیگه فرم موقع لود نباید چک کنه ببینه این فایل هس یا نه ؟


خوب این به برنامت ربط داره ولی شما چک کن ببین فایل هست یا نه که برنامه وسطش به ارروری بر نخوره.



یه سوال دیه : اون کامند 2 چیه ؟؟

کامند 1 برای ذخیره کردن متن به صورت کد شده
کامند 2 هم اونو از حالت کد در میاره و نشون میده

ali-a2
شنبه 03 تیر 1391, 20:49 عصر
نمیدونم چجوری تشکر کنم!

بابت همه چی ممنون ! :X