الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود تشفير الملفات

مغلق
بدأه هشام سوبر في 22 مارس 2007 · 5 رد · 2,020 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ارجو من الاخوة الاعضاء وضع كود لتشفير الملفات

وانا مبتدىء بيسك ارجو شرح الكود بالتفصيل الممل لفهم كل نقطة فى الكود

ولكم جزيل الشكلر ووفقكم الله

#2

الشرح صعب , مثال هنا : /index.php?showtopic=104530

#3

شكرا اخى الكريم على المساعدة ولكن ما هو فائدة الكود بدون فهم وانا لسه مبتدىء

ارجو من الاخوة الكرام فى المنتدى ان لا يبخلوا على بشرح الكود وجعله الله فى ميزان حسناتكم

#4

السلام عليكم

اقتباس
ما هو فائدة الكود بدون فهم وانا لسه مبتدىء
اقتباس
الشرح صعب -_-

أفتح الفيجوال بيسك وضع على الفورم Command1 و Command2 و CommonDialog1

هذا كود مشروح أظنه ينفع في تشفير الملفات الصغيرة الحجم التنفيذية

أتمنى أن تستفيد من فكرته في مضمار الأفكار

كود

Option Explicit

Private Sub Command1_Click()

Dim ContentFile As String
Dim Password As String
Dim FileNumber As Long

	'استعراض الملف الذي نود وضع كلمة سر عليه ووضع مساره في عنوان النموذج
	With CommonDialog1
		.Filter = "كل الملفات (*.*)|*.*|"
		.Flags = cdlOFNHideReadOnly Or cdlOFNFileMustExist Or cdlOFNPathMustExist
		.DialogTitle = "تحديد الملف"
		.FileName = ""
		.ShowOpen
		If .FileName = "" Then Exit Sub
		Caption = .FileName
	End With

	'تعريف رقم ملف جديد لدى ويندوز
	FileNumber = FreeFile

	'تهيءة المتحول بحجم الملف الذي سوف يفتح لكي يتم وضع المحتويات به
	ContentFile = Space$(FileLen(Trim$(Caption)))

	'فتح الملف بشكل ثنائي ووضعه داخل المتحول
	Open Trim$(Caption) For Binary As FileNumber
		Get #FileNumber, 1, ContentFile
	Close #FileNumber

	'فتح مربع الحوار الادخال لوضع كلمة المرورو الجديدة
	Password = InputBox("قم بتعيين كلمة المرور للملف على الا تزيد عن ثمانية خانات", "كلمة مرور")
	'تم تحديد عدد الخانات بسبب القرائة من جديد فيجب ان نعرف نقراء من اين اوي مكننا حل المشكلة بوضع علامة مميزة لبدء كلمة المرور ونهايتها مثلا كعلامة #
	'كلمة السر#
	'اما في حال تحديد العدد المعين فنقوم بملاء الخانات البقاية باصفار وسوف نستخدم هنا الطريقة الاولى
	'مع اننا حددنا عدد الخانات ولكن لن نعطي هذا اي اهمية داخل البرمجة حتى ولو زاد العدد عن ثمانية

	'وضع كلمة المرور في بداية الملف قبل مكونات الملف الاصلي ويمكن تحديد مكان اخر او تشغيير ملف
	'قمنا بوضع العلامة التي تقوم ببيان البداية والنهاية
	ContentFile = Password & "#" & ContentFile
	'في حال كنت ستسخدم كلمة السر في بايت محدد فانه من الواجب عليك بان تقوم باختيار حرف بداية وحرف نهاية غير معروف او غير مستخدم في تشفير الملف ولذلك انصح بان تستخدم الطريقة التالية
	'هذه الطريقة في حال كانة كلمة السر في مكان اخر داخل الملف طبعا لاننا لو قمنا بفتح الملف داخل محرر نصوصو وكانة في البداية فسوف نعرف كلمة المرور
	'طبعا هذا الاحتمال وارد وغير وارد فالكثير لايتوقع ان يتم التشفير بهذه الطريقة ولكن البعض يقوم بفتح الملف كما اعمل انا عند ارادة فك كلمة مرور

	'يتم اختبار عدد المحارف
	'يتم وضع عدد محارف كلمة المرور لكي يتم قرائة هذا العدد من الملف ولكي لانقوم بحذف او تعديل حرف المربع في حال كان ضمن الملف
	'طبعا نقوم بذلك بعد ان نقوم بتقسيم الملف لقسمين حتى نضع كلمة المرور في الداخل
	'ContentFile = ContentFile1 & "#" & Len(Password) & "#" & Password & "#" & ContentFile2

	'يتم فتح الملف مرة اخرى وذلك لتخزين القيم الجديدة به اي بعد وضع كلمة المرور
	Open Trim$(Caption) For Binary As FileNumber
		Put #FileNumber, 1, ContentFile
	Close #FileNumber

	'ولكن ضع في حسبانك ان بعض الملفات لاتتاثر عند وضع كلمة السر في بداية الملف وتفتح بطريقة عادية

End Sub


Private Sub Command2_Click()

Dim ContentFile As String
Dim Password As String
Dim FileNumber As Long
Dim i As Long
Dim ss As String
Dim sss As String
Dim RongPAssword As Integer

	'استعراض الملف الذي نود وضع كلمة سر عليه ووضع مساره في عنوان النموذج
	With CommonDialog1
		.Filter = "كل الملفات (*.*)|*.*|"
		.Flags = cdlOFNHideReadOnly Or cdlOFNFileMustExist Or cdlOFNPathMustExist
		.DialogTitle = "تحديد الملف"
		.FileName = ""
		.ShowOpen
		If .FileName = "" Then Exit Sub
		Caption = .FileName
	End With

	'تعريف رقم ملف جديد لدى ويندوز
	FileNumber = FreeFile

	'تهيءة المتحول بحجم الملف الذي سوف يفتح لكي يتم وضع المحتويات به
	ContentFile = Space$(FileLen(Trim$(Caption)))

	'فتح الملف بشكل ثنائي ووضعه داخل المتحول
	Open Trim$(Caption) For Binary As FileNumber
		Get #FileNumber, 1, ContentFile
	Close #FileNumber


	'يتم قرائة الملف من البداية حتى يتم التاكد من بداية الحرف
	'كلمة المرو#

	For i = 1 To Len(ContentFile)
		'يتم قطع عدد من الاحرف بمقدار الدوارة ووضعها داخل المتغيير حتى يتم اختبار وجود الحرف حتى تاتي العملية التالية
		ss = Mid$(ContentFile, 1, i)
		'في حال تم وجود هذا الحرف يتم الخروج من الدوارة كلي تاتي العملية التالية
		If Right$(ss, 1) = "#" Then Exit For
	Next

	'يتم قص كلمة السر من الملف حتى الحرف القبل الاخير والذي هو علامة المربع
	sss = Mid$(ss, 1, (Len(ss) - 1))

	'يتم الحصول على كلمة المرور حتى يتم التاكد من صحتها
10	Password = InputBox("هذا الملف محمي بكلمة مرور قم بوضع كلمة المرور حت يتم التاكد منها", "كلمة المرور")

	'يتم التحقق من كلمة المرور في حال كانة صحيحة يتم ازالتها من الملف والا يتم الخروج دون التغيير في الملف
	If Password = sss Then
		MsgBox "كلمة المرور صحيحة وسوف يتم ازالة الحماية عن الملف"
	Else
		RongPAssword = MsgBox("كلمة السر هذه خاطئة هل تود المحاولة مرة اخرى ", vbYesNo, "كلمة خاطئة")
		'اظهار رسال
		If RongPAssword = vbYes Then
			'يتم اعادته الى مربع ادخال كلمة السر من جديد
			GoTo 10
		Else
			'يتم الخروج دون تعديل الملف
			Exit Sub
		End If
	End If

	'يتم قطع القيمة السابقة من الملف لكي يتم اعادته بدون كلمة مرور
	ContentFile = Mid$(ContentFile, i + 1, Len(ContentFile))

	'يتم تخزين الملف بدون كلمة مرور
	Open Trim$(Caption) For Binary As FileNumber
		Put #FileNumber, 1, ContentFile
	Close #FileNumber


End Sub


Private Sub Form_Load()
Command1.Caption = "حماية ملف بكلمة مرور"
Command2.Caption = "حذف كلمة المرور طبعا بعد التاكد من ادخالها بشكل صحيح"
End Sub

ألا بذكر الله تطمئن القلوب

#5

ولكن يا اخى هذا التشفير لا ينفع مع الملفات كبيرة الحجم فما الحل اذا

هذا الموضوع مغلق.

مواضيع مشابهة