PDA

View Full Version : تبدیل یک فایل JPG یا GIF به CODE



saeed9982
یک شنبه 20 اسفند 1385, 19:29 عصر
چگونه می توان یک فایل JPG.GIF را با VB به CODE تبدیل کرد و فقط با خود برنامه فراخوانی شود؟لطفا منو راهنمایی کنید؟

oVERfLOW
یک شنبه 20 اسفند 1385, 23:35 عصر
مشخصه که شما در برنامه نویسی تازه کار هستید
بهتره برای یادگیری از مثال‌های آماده کمک بگیرید و سعی کنید اونا رو آنالیز کنید و بفهمید که چه جوری داره فلان کار رو انجام می‌ده...

یواش یواش یاد می‌گیرید که چه کارایی رو می‌شه انجام داد و چه کارایی رو نمی‌شه...

Farsad
دوشنبه 21 اسفند 1385, 11:53 صبح
با سلام
جناب آقای oVERfLOW بهتر نبود که حداقل یک مثال آماده میگذاشتید بعد این راهنمایی رو می‌کردید!

شما برای اینکه به هدفتون برسید میتونید از Encryption (رمز کردن فایل) استفاده کنید. من یک مثال برای شما در زیر می‌گذارم. با استفاده از این کد شما می‌تونید عکس‌هاتون رو به صورت یک استریگ رمز شده در آورده و به هر صورت که می خواهید ذخیره و بازیابی کنید.

ابتدا باید کلاس مربوط به این کار را تعریف کنید که به شرح زیر می‌باشد:


Imports System.Security.Cryptography
Imports System.Text
Imports System.IO

FriendClass Encryption

FriendSharedFunction Key() AsString
Dim strKey AsString = "yek String delkhah"
Return EncryptString(strKey, strKey.Substring(2, 3))
EndFunction

PublicOverloadsSharedFunction EncryptBytes(ByVal InputString() AsByte, ByVal EncryptionKey AsString) AsByte()
If EncryptionKey IsNothingThen
EncryptionKey = Key
EndIf
Dim des AsNew TripleDESCryptoServiceProvider
Dim hashmd5 AsNew MD5CryptoServiceProvider
des.Key = hashmd5.ComputeHash(Encoding.ASCII.GetBytes(Encryp tionKey))
des.Mode = CipherMode.ECB
Dim Transform As ICryptoTransform = des.CreateEncryptor()
Dim Buffer AsByte() = InputString
Return Transform.TransformFinalBlock(Buffer, 0, Buffer.Length)
EndFunction
PublicOverloadsSharedFunction EncryptBytes(ByVal DecryptString AsString, ByVal EncryptionKey AsString) AsByte()
Return EncryptBytes(Encoding.Unicode.GetBytes(DecryptStri ng), EncryptionKey)
EndFunction
PublicSharedFunction EncryptString(ByVal InputString AsString, ByVal EncryptionKey AsString) AsString
Return Convert.ToBase64String(EncryptBytes(Encoding.Unico de.GetBytes(InputString), EncryptionKey))
EndFunction
PublicOverloadsSharedFunction DecryptBytes(ByVal DecryptBuffer() AsByte, ByVal EncryptionKey AsString) AsByte()
If EncryptionKey IsNothingThen
EncryptionKey = Key
EndIf
If DecryptBuffer IsNothingThen
ThrowNew ArgumentNullException("DecryptBuffer")
EndIf
Dim des AsNew TripleDESCryptoServiceProvider
Dim hashmd5 AsNew MD5CryptoServiceProvider
des.Key = hashmd5.ComputeHash(Encoding.ASCII.GetBytes(Encryp tionKey))
des.Mode = CipherMode.ECB
Dim Transform As ICryptoTransform = des.CreateDecryptor()
Return Transform.TransformFinalBlock(DecryptBuffer, 0, DecryptBuffer.Length)
EndFunction
PublicOverloadsSharedFunction DecryptBytes(ByVal DecryptString AsString, ByVal EncryptionKey AsString) AsByte()
Return DecryptBytes(Convert.FromBase64String(DecryptStrin g), EncryptionKey)
EndFunction

PublicSharedFunction DecryptString(ByVal DecString AsString, ByVal EncryptionKey AsString) AsString
Try
Return Encoding.Unicode.GetString(DecryptBytes(Convert.Fr omBase64String(DecString), EncryptionKey))
Catch
ReturnString.Empty
EndTry
EndFunction
EndClass


سپس در کد های برنامه برای تبدیل کردن یک عکسبه صورت رمز از:
توجه:(در این مثال عکس در یک pictureBox به نامpicLogo قرار دارد )



If Not picLogo.Image Is Nothing Then
dim encryptedImage as string
Dim msr As New MemoryStream
picLogo.Image.Save(msr, Imaging.ImageFormat.Jpeg)
Dim arrImager() As Byte = msr.GetBuffer
msr.Close()
encryptedImage = Encryption.EncryptString(Convert.ToBase64String(ar rImager), Encryption.Key)
End If


و برای تبدیل یک رمز به عکس از کد زیر استفاده کنید:
توجه: (فرض کرده ایم که عکس رمز شده در یک متغیر به نام encryptedImage قرار دارد)



Dim strImage As String = Encryption.DecryptString( encryptedImage , Encryption.Key)
If strImage.Length > 0 Then
Dim arrImage() As Byte = Convert.FromBase64String(strImage)
Dim ms As New MemoryStream(arrImage)
picLogo.Image = Image.FromStream(ms)
ms.Close()
End If



در ضمن این کد برای رمز کردن یک رشته هم می‌تونه به کار برده بشه. که فقط باید از توابع DecryptString و EncryptString استفاده بشه.
توجه : من با این کدها در vb.net کار کرده‌ام. شاید با نسخه‌های قدیمی vb درست کار نکنه!
امیدوارم که تونسته باشم کمکی بکنم.

Farsad
دوشنبه 21 اسفند 1385, 18:05 عصر
راستی من یادم رفت یک مطلب رو بگم اونم اینکه با استفاده از این کد شما محدود به ظرفیت string می‌باشید. یعنی عکس‌های بزرگ رو نمی‌تونید با این کدها به صورت رمز دربیارید مگر اینکه با تغییر این کدها اون رو در یک آرایه قرار بدید.
اگر هدف شما فقط باز نشدن فایل‌ها به غیر از استفاده از برنامه شما است می‌تونید فایل‌های فوق رو خراب کرده و بعدا آنها رو به حالت اول بگردونید و مجدد استفاده کنید.
اگر در این مورد اطلاعات بیشتری خواستید. بگید تا اون رو هم براتون توضیح بدم.

seeker
سه شنبه 22 اسفند 1385, 10:28 صبح
بابا اینارو همه رو سرهم نوشتی نه ما میفهمیم نه کامپایلر

mehran8
پنج شنبه 24 اسفند 1385, 16:31 عصر
خیلی ممنون فرشاد جان

حالا من یه سوال دارم ؟؟؟‌!!!
چه جوری می شه محتوای یک فایل exe رو مشاهده کرد ؟
من اول اومدم با vb یک فایل exe رو به یه جای دیگه کپی کردم و پسوند اون رو به txt تغییر دادم
وقتی فایل txt رو باز کردم یه سری کد دیده می شد
حالا می تونی برنامه بنویسی که خودکار این کارها رو انجام بده
یعنی :
ابتدا فایل رو با پسوند txt یه جای دیگه کپی کنه
بعداً محتوای اون رو باز کنه

من که نتونستم

بای