توضیحات کامل در مورد فایل
دانلود کد ماکرو سیستم رمزنگاری پیشرفته دادهها در اکسل با پشتیبانی از فارسی و انگلیسی
در بسیاری از پروژههای اکسل که اطلاعات حساس یا محرمانه در آنها نگهداری میشود، نیاز به روشی برای محافظت از دادهها احساس میشود. یکی از راهکارهای رایج، رمزنگاری اطلاعات است تا در صورت دسترسی غیرمجاز به فایل، محتوای اصلی قابل خواندن نباشد. کدی که در این مقاله معرفی میشود، یک سیستم رمزنگاری و رمزگشایی ساده اما کاربردی است که با استفاده از زبان VBA نوشته شده و بهطور خاص برای پشتیبانی از متنهای فارسی و انگلیسی طراحی شده است. این کد بر اساس ترکیب روش رمزگذاری با کلید چرخشی (Looped Key) و تبدیل نهایی به Base64 عمل میکند، که باعث میشود دادهها علاوهبر رمز شدن، در قالبی قابل انتقال و ذخیرهسازی امن نیز قرار بگیرند.
هسته اصلی این سیستم را دو تابع EncryptAdvanced
و DecryptAdvanced
تشکیل میدهند. تابع EncryptAdvanced
با دریافت یک متن و یک کلید رشتهای، اقدام به پردازش هر کاراکتر ورودی کرده و مقدار یونیکد (کد عددی) آن را با مقدار یونیکد کاراکتر متناظر از کلید جمع میزند. در صورتی که طول کلید از طول متن کمتر باشد، این کلید بهصورت حلقهای تکرار میشود. این روش ساده اما موثر، سطح پایهای از رمزنگاری را فراهم میکند که برای بسیاری از استفادههای داخلی کافی است. پس از اتمام رمزنگاری، متن نهایی با استفاده از استاندارد Base64 رمزگذاری میشود تا خروجی نهایی از کاراکترهایی تشکیل شده باشد که در سیستمهای مختلف قابل استفاده و خواندن باشند.
فرآیند رمزگشایی با تابع DecryptAdvanced
انجام میشود که دقیقاً عکس مراحل رمزنگاری عمل میکند. در این تابع، ابتدا رشته ورودی که قبلاً به Base64 تبدیل شده، مجدداً به رشته اصلی رمز شده بازگردانده میشود. سپس، با استفاده از همان کلید رمز، کد یونیکد هر کاراکتر از متن رمز شده کاهش یافته و به مقدار اصلی بازمیگردد. این تابع از کاراکترهای کنترل سیستمی محافظت میکند و در صورت بروز خطا، مقدار خطای اکسل (مثل #VALUE!
) بازمیگرداند. بدین ترتیب، هم عملکرد آن پایدار است و هم امکان کنترل خطا در برنامههای پیچیدهتر وجود دارد.
برای تبدیل دادهها به و از Base64، از توابع Base64Encode
و Base64Decode
استفاده میشود. این توابع با بهرهگیری از شیءهای COM مانند ADODB.Stream
و MSXML2.DOMDocument
، تضمین میکنند که عملیات کدگذاری و رمزگشایی با دقت بسیار بالا و پشتیبانی کامل از کاراکترهای یونیکد (از جمله فارسی) انجام شود. نکته مهم اینجاست که در تبدیل به بایت و سپس به رشته، از رمزگذاری UTF-8 استفاده شده که یکی از بهترین استانداردها برای پشتیبانی از زبانهای مختلف است. این موضوع باعث میشود بتوان از این سیستم برای متونی با زبانهای گوناگون بدون مشکل استفاده کرد.
🔐 کد رمزنگاری و رمزگشایی پیشرفته متون فارسی و انگلیسی در اکسل با پشتیبانی از Base64
در این پست، قصد داریم یک کد بسیار کاربردی و پیشرفته VBA را معرفی کنیم که امکان رمزنگاری (Encryption) و رمزگشایی (Decryption) متنها (اعم از فارسی، انگلیسی یا ترکیبی) را با استفاده از یک کلید رشتهای چرخشی و استاندارد Base64 فراهم میکند. این کد در محیط اکسل قابل اجراست و بهراحتی میتوان از آن در ماکروها، فرمها یا حتی توابع سفارشی استفاده کرد.
✨ قابلیتهای کلیدی این ابزار:
-
پشتیبانی کامل از کاراکترهای یونیکد از جمله حروف فارسی
-
رمزگذاری با کلید چرخهای (looped key) برای افزایش امنیت
-
تبدیل دادهها به فرمت Base64 جهت انتقال یا ذخیره امن
-
طراحی ماژولار و قابل استفاده در پروژههای مختلف اکسل
-
استفاده از شیءهای پیشرفته مانند
ADODB.Stream
وMSXML2.DOMDocument
📦 اجزای اصلی کد:
✅ 1. تابع EncryptAdvanced
این تابع متن ورودی را با کلید مشخص شده رمزنگاری میکند. نحوه کار بدین صورت است:
-
برای هر کاراکتر متن، معادل عددی یونیکد آن (
AscW
) گرفته میشود. -
مقدار عددی معادل کاراکتر کلید در همان موقعیت نیز محاسبه شده و به مقدار اصلی افزوده میشود.
-
در نهایت، خروجی بهصورت یونیکد رمز شده در قالب Base64 بازگردانده میشود.
EncryptAdvanced("سلام دنیا", "myKey")
✅ 2. تابع DecryptAdvanced
نسخه معکوس EncryptAdvanced
است و متن رمز شده (قبل از تبدیل Base64) را با همان کلید اصلی رمزگشایی میکند.
✅ 3. تابع Encrypt
و Decrypt
این توابع برای راحتی بیشتر طراحی شدهاند تا رمزنگاری و رمزگشایی همراه با Base64 را یکجا انجام دهند:
EncryptedText = EncryptAdvanced("متنی برای رمزنگاری", "myKey")
OriginalText = Decrypt(EncryptedText, "myKey")
✅ 4. توابع Base64Encode
و Base64Decode
برای تبدیل دادهها به/از Base64 استفاده میشوند. از شیء ADODB.Stream
برای تبدیل دقیق UTF-8 استفاده شده که از کاراکترهای فارسی نیز پشتیبانی میکند.
🧪 نمونه تست (TestBase64)
زیرروال TestBase64
نشان میدهد که چگونه میتوان یک متن را رمزگذاری و سپس رمزگشایی کرد و خروجی را در یک MsgBox مشاهده کرد.
📌 نکات امنیتی و فنی:
-
این رمزنگاری در سطح حرفهای مناسب برای رمزگذاری اطلاعات داخلی فایلهای اکسل میباشد، اما برای کاربردهای امنیتی سطح بالا توصیه نمیشود.
-
تابع از ساختار "چرخهای" برای استفاده از کلید بهره میبرد. یعنی اگر کلید کوتاهتر از متن باشد، بهصورت چرخشی مجدد از ابتدای کلید استفاده میشود.
-
تابع از کنترل کاراکترهای کنترلی ASCII (<32) اجتناب میکند تا دادههای سیستم آسیب نبینند.
💡 موارد استفاده پیشنهادی:
-
پنهانسازی اطلاعات حساس در فایلهای اکسل (مثلاً رمزها یا شمارههای مهم)
-
رمزگذاری دادهها پیش از ذخیره در دیتابیس اکسل یا انتقال به کاربر دیگر
-
استفاده در فرمهای VBA جهت افزایش امنیت ارتباطات
🧩 نحوه استفاده:
-
کد کامل را در محیط VBA Editor (با فشردن Alt + F11) در یک ماژول جدید وارد کنید.
-
توابع
EncryptAdvanced
وDecrypt
را مانند توابع معمولی در اکسل یا کد VBA فراخوانی کنید. -
از کلید مناسب استفاده کنید و توجه داشته باشید که رمزگشایی فقط با همان کلید ممکن است.
برای شما کاربران عزیز پیشنهاد دانلود داده می شود.