PDA

View Full Version : مبتدی: کد گذاری روی سریال های برای جلوگیری از شناسایی



sajaaaaad
دوشنبه 04 خرداد 1394, 10:45 صبح
با درود فراوان.
.
من یک سریال دارم هفت رقمی! حالا میخوام به انتهای این عدد یک یا چند تعداد عدد اضافه کنم که طبق یک فرمول اعمال شده روی این هفت رقم باشه.! که کاربر نتونه سریال بعدی رو حدس بزنه!
بهترین کار چیه.!؟ نکته حروف دخیل نشه، من میخوام رقم نهاییم مثلا میگم یک عدد 10 رقمی باشه که کدینگ شده.! روش پیشنهادی چی دارین!؟
با تشکر..

Javad_raouf
دوشنبه 04 خرداد 1394, 12:31 عصر
میشه بگید برای چی این کار رو می خوای انجام بدی؟
چون این کاری که شما می خوای معمولا برای اینه که بررسی بشه سریال وارد شده صحیحه یا نه و کاربردش برای Register کردن نرم افزار فکر نمی کنم باشه
مثلا IMEI یا همون سریال گوشی در حقیقت 14 رقمه و رقم 15 ام بر اساس فرمولی از 14 رقم قبلی به دست میاد
یا مثلا کد ملی هم همچین الگوریتمی داره
ولی کلا این راه چون یک فرمول ثابت و قابل تشخیص داره خیلی به درد سریال ثبت نرم افزار نمی خوره بلکه کاربردش فقط اینه که اگر کاربر اشتباه تایپی داشت ما بتونیم تشخیص بدیم

در هر صورت چیزی که شما می خوای این یک نمونه اگوریتم خوبشه:
static int char2int(char chr) { return int.Parse(chr.ToString()); }
static int GetCheckSumNumber(long Number)
{
string strNum = Number.ToString();
int mul = 2, sum = 0, chkSum;
for (int i = strNum.Length - 1; i >= 0; i--)
{
if ((char2int(strNum[i]) * mul) >= 10)
sum += ((char2int(strNum[i]) * mul) / 10) + ((char2int(strNum[i]) * mul) % 10);
else
sum += char2int(strNum[i]) * mul;
if (mul == 2)
mul = 1;
else
mul = 2;
}
chkSum = sum % 10;
if (chkSum > 0) chkSum = 10 - chkSum;
return chkSum;
}
این تابع هر عددی بهش بدی یک رقم اصطلاحا CheckSum بهت بر می گردونه که باید به آخر عدد قبلیت اضافه کنی

sajaaaaad
دوشنبه 04 خرداد 1394, 13:55 عصر
مرسی، ممنون، منم برای همین کار میخوام، تشخیص اینکه کد صحیح باشه، همین، برای ریجستر کردن نیست، واسه تبلیغات و اسمسه...
مرسی جواد جان.
دوستان اگر پیشنهاد دیگه ای دارن بگن. ممنون.