با سلام.
فرض کنید مشتری شماره سریال قطعات سخت افزاری رایانه را برای ما ارسال کرد حالا ما چطوری شماره یونیک درست کنیم و برای مشتری ارسال کنیم تا نرم افزار فعال بشه؟
ممنون
با سلام.
فرض کنید مشتری شماره سریال قطعات سخت افزاری رایانه را برای ما ارسال کرد حالا ما چطوری شماره یونیک درست کنیم و برای مشتری ارسال کنیم تا نرم افزار فعال بشه؟
ممنون
به سادگی با یک رابطه ریاضی با استفاده از اطلاعات سخت افزاری کافی که این اطلاعات را با یک الگوریتم Hash اینکریپت کنید سمت کلاینت هم با اطلاعات سخت افزاری مجددا Hash را بسازید و با Hash دریافتی مقایسه کنید البته برای سخت تر شدن الگوریتم های اینکریپت از تلفیق چند الگوریتم و Check Sum استفاده کنید قطعا بهتر هست که الگوریتم hash را خودتون بنویسیدو با الگوریتم های شناخته شده تلفیق کنید تا شکستن الگوریتم کار ساده ای نباشه
کدی که من قرار بدم که بدردتون نمیخوره! عرض کردم کافی که یک الگوریتم خوب برای hash انتخاب کنید الباقی اش هنر و خلاقیت خودتون را میطلبه!
مثلا از این الگوریتم برای hash استفاده کنید سازگار با ++C# , C البته خیلی هم خوب نیست چون خیلی سریع نوشتم صرفا برای اینکه ایده بگیرید....
#define MASK_DWORD_BYTE 0xf0000000
unsigned long
hashGenrator(const unsigned char* buffer){
unsigned long h = 0 , g ;
while(*buffer){
h = (h << 4) + *buffer++;
if((g = h & MASK_DWORD_BYTE))
h ^= g >> 24;
h &= ~g;
}
return h;
}
const int MASK_DWORD_BYTE = 0xf0000000;
ulong
hashGenrator(String buffer){
var h = 0UL ;
var g = 0UL ;
var index =0;
while(index <= buffer.Length){
h = (h << 4) + buffer[index++];
if((g = h & MASK_DWORD_BYTE))
h ^= g >> 24;
h &= ~g;
}
return h;
}
فرض بفرمایید سریال سخت افزاری ارسال شده توسط مشتری کد زیر باشد:
7B76-0644-B8FD-E01F-0A96-C321
کد فوق را با رشته زیر جمع میکنم :
@Ali110^karimi
و سپس توسط الگوریتم MD5 به Hash تبدیل میکنم و به مشتری ارسال میکنم.
همین کار هم توسط کلاینت مشتری انجام میشود.
و سپس این دو Hash در نرم افزار مقایسه شده و در صورت برابری نرم افزار فعال میشود.
دو سوال مطرحه :
1-آیا همیشه Hash تولیدی از یک شماره سریال توسط دو طرف یکسان خواهد بود؟
2-امنیت این روش چقدر تضمین شده هست؟
ممنون
آخرین ویرایش به وسیله SardareEshgh : سه شنبه 11 تیر 1398 در 13:41 عصر
بله در صورتی که سریال سخت افزاری همیشه یکتاست خوب قطعا وقتی داری با یک رشته ثابت هم جمع میکنی نتیجه hash یکسان خواهد شد.1-آیا همیشه Hash تولیدی از یک شماره سریال توسط دو طرف یکسان خواهد بود؟
اگر برنامه تون با سی شارپ که و اگر این الگوریتم ها را داخل سورس قرار بدید امنیتی نداره ولی اگر سناریو تولید کد هش را در یک کامپیوتر راه دور مثلا از طریق نت روی یک سرور انجام بدید امنیت خیلی بیشتر خواهد شد. یعنی کلا تولید کد هش را باید از طریق وب سرویس ها انجام بدید!2-امنیت این روش چقدر تضمین شده هست؟
و خیلی موارد دیگه که قبلا هم بحث شده جستجو کنید