سلام
برای اینکار اول نیاز به استخراج یک سریال منحصر بفرد از سخت افزار سیستم فرد دارید، مثل مادربور یا هارد و... (تا کدفعال سازی تولید شده شما فقط روی همان رایانه کار
کند)
برای اینکار میتوانید از System.Management.dll و فضای نام مربوطه استفاده کنید.
سپس کد مذکور را با یک الگوریتم هش به طول ثابت تبدیل کنید.
مثلاً با الگوریتم MD5 که از طریق کلاس آماده System.Security.Cryptography.MD5 میتوانید.
الگوریتم MD بدون توجه به حجم ورودی یک کد ثابت 16 بایتی میدهد که برای نمایش به کاربر میتوانید با ------ استفاده کنید.
برای این کار هم و توابع آماده System.Convert اموجود هستند و 26 کاراکتر انگلیسی قابل رویت به مشتری نشان میدهید.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این کدی است که برنامه روی رایانه کاربر اعلام میکند و از او درخواست میکند طبق این کد، کد فعال سازی را وارد نماید.
(مشتری میتواند کد فوق را از طریق SMS یا سایت و یا تلفن و... به شما اعلام کند و کدنظیر فعال سازی را دریافت کنید.)
اما کد فعال سازی که شما میدهید...
این باید حداقل حداقل شامل یک بخش کد سخت افزاری باشد که خود فرد ارسال کرده و بخش دوم اطلاعات فعال سازی مثل تاریخ شروع و مدت فعال بودن و... را داشته باشد.
(((
یعنی شما همان کد سخت افزاری را که رایانه مشتری تولید کرده و به شما داده به همان صورت یا با هش کوچکتری در داخل کد فعال سازی خود هم جای میدهید!
چرا؟!
برنامه که روی رایانه مشتری است پس از گرفتن کد فعال سازی کد هش سخت افزاری داخل آن را با کد هش ای که خودش تولید کرده مقایسه میکند و مثلاً در صورت عدم برابری نتیجه
میگیرد این کد فعال سازی برای رایانه دیگری صادر شده و نباید کار کند و بلعکس ...
)))
کد فعال سازی که شامل اطلاعات سریالی شده فوق است را باید رمزنگاری کنید تا محتویات ان مشخص نشود.
مثلاً برای اینکار میتوانید از الگوریتم DES استفاده کنید و 7 بایت یا 15 بایت را به ان بدهید و در نهایت 8 بایت یا 16 بایت رمزنگری شده را تحویل بگیرید.
برای اینکار میتوانید از کلاس آماده System.Security.Cryptography.DES استفاده کنید.
(((
دقت کنید که تولید مقادیر 7 بایت یا 15 بایت در اینکار و با استفاده از DES خیلی مهم است.
چون اولاً آنکه در سریال فعال سازی شما نمیتوانید تعداد بایت زیادی را منتقل کنید
و دوماً الگوریتمی مثل DES بین حداقل 1 الی حداکثر 8 بایت سربار رمزنگاری دارد.
یعنی مثلاً اگر 7 بایت را برای رمز نگاری به DES بدهید 8 بایت پس میدهد ولی
اگر 8 بایت را بدهید رمزنگاری کند 16 بایت پس میدهد.
یعنی یک بایت اختلاف باعث تفاوت نشان دادن 13 کاراکتر انگلیسی در مقابل 26 کاراکتر خواهد شد.
)))
این کد را هم به همان صورت ------ گفته شده به کاربر میدهید تا در برنامه وارد کند.
بقیه فرآیند معکوس اعمال فوق الذکر است.
یعنی برنامه کد فعال سازی را میگیرد و با DES رمزگشایی میکند و کد سخت افزاری ان را مقایسه میکند و پس از صحت ، محدودیت های ان را برای کارکرد جاری خود اعمال میکند.
اگر شروع به برنامه نویسی فرآیند فوق کردید و هرجایی به مشکل برخوردید، بفرمائید در خدمت هستم ولی فرصت کافی برای ساخت و ارائه برنامه نمونه را ندارم.
(((
درست یادم نیست ولی مدتی قبل همین فرآیند و مباحث و... را برای دوست دیگری بصورت خصوصی توضیح داده بودم ...
چه بهتر که دوستان این مسائل را در تاپیک های عمومی مطرح کنند تا نتیجه سوال و جواب ها و رفع ابهامات مستند شده و قابل استفاده دیگران هم باشد و نیاز به تکرار سوالات و جواب های
زمان بر کمتر شود...
)))
موفق باشید.