PDA

View Full Version : حرفه ای: نحوه ذخیره کردن فایل متنی طوری که اگه باز بشه قابل خوندن نباشه.



vb.net.33
دوشنبه 30 آبان 1390, 17:44 عصر
با سلام

من می خوام یه فایل متنی بنویسم و اون رو ذخیره کنم. بطوری که اگه با نرم افزار خودم باز نشه متن داخلش قابل استفاده نباشه مثل کاری که اکثر شرکتهای بزرگ نرم افزاری این کارو می کنند.مانند نرم افزار تریدی مکس و یا اتوکد و ...

دقت کنید که من نمی خوام رو فایلم رمز بگذارم . من فقط می خوام این فایل متنی که ایجاد می کنم قابل فهم برای دیگران نباشه و بقولی اگه بازش کنند کارکترهای اجق و جق نشون بده.مانند فایا تریدی مکس که اگه بغیر از نرم افزار مربوطه این کارو بکنیم این حالت پیش می آد.


با تشکر از دوستان عزیز که من رو راهنمائی می کنند.

pouyansaraf
دوشنبه 30 آبان 1390, 17:57 عصر
فایل را به صورت باینری ذخیره کنید
ولی قسمت های text آن قابل رویت هست

Imports System.IO

نوشتن باینری

Dim fs As New FileStream("d:\binary.bin", FileMode.Create, FileAccess.Write)
Dim w As New BinaryWriter(fs)
For i = 0 To 10
w.Write(CInt(i))
Next
w.Close()
fs.Close()

خواندن باینری

Dim fr As New FileStream("d:\binary.bin", FileMode.Open, FileAccess.Read)
Dim r As New BinaryReader(fr)
For i = 0 To 10
MsgBox(r.ReadInt32)
Next
r.Close()
fr.Close()

vb.net.33
سه شنبه 01 آذر 1390, 11:45 صبح
فایل را به صورت باینری ذخیره کنید
ولی قسمت های text آن قابل رویت هست

Imports System.IO

نوشتن باینری

Dim fs As New FileStream("d:\binary.bin", FileMode.Create, FileAccess.Write)
Dim w As New BinaryWriter(fs)
For i = 0 To 10
w.Write(CInt(i))
Next
w.Close()
fs.Close()

خواندن باینری

Dim fr As New FileStream("d:\binary.bin", FileMode.Open, FileAccess.Read)
Dim r As New BinaryReader(fr)
For i = 0 To 10
MsgBox(r.ReadInt32)
Next
r.Close()
fr.Close()


دوست عزیز خیلی ممنونم.


ولی من می خوام اطلاعاتی که تو ریچتکست باکس نوشتم رو به حالت باینری در بیارم. و سپس در صورت نیاز دوباره بخونمشون.


به عبارت دیگر:
من می خوام یه متن رو به حالت باینری بنویسم و دوباره بخونمش.


بعدش هم شما در موقع نوشتن از CInt استفاده کردین دلیل این کار چی بود؟ مگه خود i با توجه به دامنش اینتیگر نبود؟! که شما از همچین کدی بهره گرفتین؟


باز هم از شما تشکر می کنم که وقت صرف می کنید.

asghar2008
سه شنبه 01 آذر 1390, 14:16 عصر
به عبارت دیگر:
من می خوام یه متن رو به حالت باینری بنویسم و دوباره بخونمش.



سلام
دوست گرامی کد بالایی دقیقا متن مورد نظرتون رو به صورت باینری ذخیره می کنه.

موقع خوندن هم به صورت باینری میخونه.

موفق باشی...

pouyansaraf
سه شنبه 01 آذر 1390, 17:22 عصر
سلام
در حالتی که فایلی را به صورت باینری ذخیره کردید باید آن را موقع خواندن به صورت باینری بخونید که اون هم با حالت Int32 خوانده شود .
i یک عدد بود و خود i اینتیجر است ولی در فایل باینری به صورت int32 ذخیره میشود . اشتباه نکنید.

روش های دیگری هم هست که چون شما گفتید نمیخواهید رمز گزاری کنید من صحبتی از آن نکردم
ولی بهترین روش استفاده از رمز نگاری با روش های مختلف از جمله MD5 و ... (الان اسماشون یادم نیست اگر بخواهید باید از کتابا در بیارم) است
ولی یک روش دیگه ای هم هست که کل richtextbox رو با هم زخیره میکند
روشی که حتی اندازه قسمت های مختلف فونت و رنگ و ... را با هم ذخیره میکند که یکی از رویداد های richtextbox است که این هم بخاطر اینکه قابل برگشت است به درد شما نمیخورد.
در هر صورت در مورد درخواست شما فقط راه باینری کردن به ذهنم رسید
ولی چرا رمز گزاری قابل برگشت با استفاده از کلمه SALT نمیگزارید ؟
برگردوندنش سخته

vb.net.33
سه شنبه 01 آذر 1390, 18:13 عصر
سلام
در حالتی که فایلی را به صورت باینری ذخیره کردید باید آن را موقع خواندن به صورت باینری بخونید که اون هم با حالت Int32 خوانده شود .
i یک عدد بود و خود i اینتیجر است ولی در فایل باینری به صورت int32 ذخیره میشود . اشتباه نکنید.

روش های دیگری هم هست که چون شما گفتید نمیخواهید رمز گزاری کنید من صحبتی از آن نکردم
ولی بهترین روش استفاده از رمز نگاری با روش های مختلف از جمله MD5 و ... (الان اسماشون یادم نیست اگر بخواهید باید از کتابا در بیارم) است
ولی یک روش دیگه ای هم هست که کل richtextbox رو با هم زخیره میکند
روشی که حتی اندازه قسمت های مختلف فونت و رنگ و ... را با هم ذخیره میکند که یکی از رویداد های richtextbox است که این هم بخاطر اینکه قابل برگشت است به درد شما نمیخورد.
در هر صورت در مورد درخواست شما فقط راه باینری کردن به ذهنم رسید
ولی چرا رمز گزاری قابل برگشت با استفاده از کلمه SALT نمیگزارید ؟
برگردوندنش سخته


دوست عزیز من دنبال رمزنگاری خاصی نیستم. فقط می خوام متنی رو که در تکست باکس نوشتم بر اساس باینری ذخیره کنم. و در صورت نیاز اون رو فراخونی کنم.در ضمن من نمی خوام چیز های خاص دیگه ای مثل فونت و رنگ اینها ذخیره بشن.

در واقع ما که قبلا می امدیم و یک فایل متنی درست می کردیم و جایی ذخیره می کردیم و دوباره باز می کردیم و می خوندیم رو می خوام انجام بدم ، با این تفاوت که بصورت باینری این کاروبکنیم.همین.


نمونه کدی رو که دادین خوب بود ولی مشکل من رو حل نکرد.چون من می خوام متن رو تبدیل به حالت باینری کنم که نمونه کد شما فقط اعداد رو تبدیل میکنه. در ضمن نمونه کد شما خط به خط فایل باینری رو می خونه و نمایش میده در حالی که من می خوام کل فایل باینری در یک لحظه خونده و نمایش داده بشه.

Hybrid
سه شنبه 01 آذر 1390, 18:21 عصر
سلام دوست عزیز ، من این کد رو واست نوشتم که مقدار های داخل RichTextBox رو به صورت باینری ذخیره میکنه و همچنین قابل بازیابی هم هستن... اینم کدش ....


Imports System.IO
Public Class Form1

Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fs As New FileStream("c:\Binary.bin", FileMode.Create, FileAccess.Write)
Dim fsWrite As New BinaryWriter(fs)
fsWrite.Write(RichTextBox1.Text)

fsWrite.Close()
End Sub

Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim fs As New FileStream("c:\Binary.bin", FileMode.Open, FileAccess.Read)
Dim fsRead As New BinaryReader(fs)

While fsRead.PeekChar > -1
RichTextBox1.Text = RichTextBox1.Text + fsRead.ReadString + ControlChars.CrLf
End While

fsRead.Close()

End Sub
End Class

vb.net.33
چهارشنبه 02 آذر 1390, 11:50 صبح
سلام دوست عزیز ، من این کد رو واست نوشتم که مقدار های داخل RichTextBox رو به صورت باینری ذخیره میکنه و همچنین قابل بازیابی هم هستن... اینم کدش ....


Imports System.IO
Public Class Form1

Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fs As New FileStream("c:\Binary.bin", FileMode.Create, FileAccess.Write)
Dim fsWrite As New BinaryWriter(fs)
fsWrite.Write(RichTextBox1.Text)

fsWrite.Close()
End Sub

Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim fs As New FileStream("c:\Binary.bin", FileMode.Open, FileAccess.Read)
Dim fsRead As New BinaryReader(fs)

While fsRead.PeekChar > -1
RichTextBox1.Text = RichTextBox1.Text + fsRead.ReadString + ControlChars.CrLf
End While

fsRead.Close()

End Sub
End Class


کدهائی که دادین کار خاصی نمیکنه!!!

همون طور که تو ریچباکس می نویسیم و دیده می شه بعد از ذخیره کردن به حالت باینری باز قابل خوندنه اگه با نتپد باز کنید.

Hybrid
چهارشنبه 02 آذر 1390, 13:15 عصر
خوب دوست عزیز مگه شما نمیخواستین اطلاعات درون richtextbox به صورت باینری ذخیره وبازیابی کنین ؟!!کدش رو در بالا واستون نوشتم...

vb.net.33
چهارشنبه 02 آذر 1390, 15:34 عصر
خوب دوست عزیز مگه شما نمیخواستین اطلاعات درون richtextbox به صورت باینری ذخیره وبازیابی کنین ؟!!کدش رو در بالا واستون نوشتم...

خوب اگه شما نگاه کرده باشید تو پست2 یه دوستی از کدی استفاده کردن که اعداد 0 تا 10 به صورت نامفهوم و نا خوانا ذخیره میشند که اگه با نت پد بازشون کنیم یه سری کارکتر نامفهوم می بینیم. حالا من می خوام همین اتفاق در ذخیره کردن متن ریچباکس اتفاق بیفته.که تو کدهای شما اینجوری نبود.

amir.net
پنج شنبه 12 مرداد 1391, 18:40 عصر
شما میتونید متنتون رو به صورت آرایه ای از اعداد ذخیره کنید و زمان خواندن فایل اون به کاراکتر برگدون نمایید