PDA

View Full Version : كد و ديكد يك عدد



mahdy.asia
سه شنبه 04 بهمن 1390, 17:49 عصر
من سريال هارد رو مي خوام تو رجيستري بصورت كد ذخيره كنم (براي جلوگيري از استفاده غيرمجاز از سيستم)
از پيشنهادات شما متشكرم

عقاب سیاه
سه شنبه 04 بهمن 1390, 17:59 عصر
من خودم از این استفاده می کنم همیشه یکی از اساتید همین سایت فکر کنم نوشتنش

function Encrypt(Text: string; Key1, Key2, Key3, Key4: Integer): string;
var
BufS, Hexa, Hexa1, Hexa2: string;
BufI, BufI2, Sc, Sl, Num1, Num2, Num3, Num4, Res1, Res2, Res3, Res4: Integer;
begin
if Text = '' then
Begin
Result := '';
Exit;
End;
Sl := Length(Text);
Sc := 0;
BufS := '';
if (Key1 in [1 .. 120]) and (Key2 in [1 .. 120]) and (Key3 in [1 .. 120]) and
(Key4 in [1 .. 120]) then
begin
BufI := Key1 * Key4;
BufI2 := Key3 * Key2;
BufI := BufI - BufI2;
if BufI = 0 then
begin
Result := '';
Exit;
end;
end
else
begin
Result := '';
Exit;
end;
repeat
Inc(Sc);
if Sc > Sl then
Num1 := 0
else
Num1 := Ord(Text[Sc]);
Inc(Sc);
if Sc > Sl then
Num2 := 0
else
Num2 := Ord(Text[Sc]);
Inc(Sc);
if Sc > Sl then
Num3 := 0
else
Num3 := Ord(Text[Sc]);
Inc(Sc);
if Sc > Sl then
Num4 := 0
else
Num4 := Ord(Text[Sc]);
Res1 := Num1 * Key1;
BufI := Num2 * Key3;
Res1 := Res1 + BufI;
Res2 := Num1 * Key2;
BufI := Num2 * Key4;
Res2 := Res2 + BufI;
Res3 := Num3 * Key1;
BufI := Num4 * Key3;
Res3 := Res3 + BufI;
Res4 := Num3 * Key2;
BufI := Num4 * Key4;
Res4 := Res4 + BufI;
for BufI := 1 to 4 do
begin
case BufI of
1:
Hexa := IntToHex(Res1, 4);
2:
Hexa := IntToHex(Res2, 4);
3:
Hexa := IntToHex(Res3, 4);
4:
Hexa := IntToHex(Res4, 4);
end;
Hexa1 := '$' + Hexa[1] + Hexa[2];
Hexa2 := '$' + Hexa[3] + Hexa[4];
if (Hexa1 = '$00') and (Hexa2 = '$00') then
begin
Hexa1 := '$FF';
Hexa2 := '$FF';
end;
if Hexa1 = '$00' then
Hexa1 := '$FE';
if Hexa2 = '$00' then
begin
Hexa2 := Hexa1;
Hexa1 := '$FD';
end;
BufS := BufS + Chr(StrToInt(Hexa1)) + Chr(StrToInt(Hexa2));
end;
until Sc >= Sl;
Result := BufS;
end;


function Decrypt(Text: string; Key1, Key2, Key3, Key4: Integer): string;
var
BufS, Hexa1, Hexa2: string;
BufI, BufI2, Divzr, Sc, Sl, Num1, Num2, Num3, Num4, Res1, Res2, Res3,
Res4: Integer;
begin
if Text = '' then
Begin
Result := '';
Exit;
End;
Sl := Length(Text);
Sc := 0;
BufS := '';
if (Key1 in [1 .. 120]) and (Key2 in [1 .. 120]) and (Key3 in [1 .. 120]) and
(Key4 in [1 .. 120]) then
begin
Divzr := Key1 * Key4;
BufI2 := Key3 * Key2;
Divzr := Divzr - BufI2;
if Divzr = 0 then
begin
Result := '';
Exit;
end;
end
else
begin
Result := '';
Exit;
end;

repeat
for BufI := 1 to 4 do
begin
Inc(Sc);
Hexa1 := IntToHex(Ord(Text[Sc]), 2);
Inc(Sc);
Hexa2 := IntToHex(Ord(Text[Sc]), 2);
if Hexa1 = 'FF' then
begin
Hexa1 := '00';
Hexa2 := '00';
end;
if Hexa1 = 'FE' then
Hexa1 := '00';
if Hexa1 = 'FD' then
begin
Hexa1 := Hexa2;
Hexa2 := '00';
end;
case BufI of
1:
Res1 := StrToInt('$' + Hexa1 + Hexa2);
2:
Res2 := StrToInt('$' + Hexa1 + Hexa2);
3:
Res3 := StrToInt('$' + Hexa1 + Hexa2);
4:
Res4 := StrToInt('$' + Hexa1 + Hexa2);
end;
end;
BufI := Res1 * Key4;
BufI2 := Res2 * Key3;
Num1 := BufI - BufI2;
Num1 := Num1 div Divzr;
BufI := Res2 * Key1;
BufI2 := Res1 * Key2;
Num2 := BufI - BufI2;
Num2 := Num2 div Divzr;
BufI := Res3 * Key4;
BufI2 := Res4 * Key3;
Num3 := BufI - BufI2;
Num3 := Num3 div Divzr;
BufI := Res4 * Key1;
BufI2 := Res3 * Key2;
Num4 := BufI - BufI2;
Num4 := Num4 div Divzr;
BufS := BufS + Chr(Num1) + Chr(Num2) + Chr(Num3) + Chr(Num4);
until Sc >= Sl;
Result := BufS;
end;

BORHAN TEC
چهارشنبه 05 بهمن 1390, 09:54 صبح
به جای این همه کد بهتره که از کامپوننت HddInfo استفاده کنید.

mahdy.asia
یک شنبه 09 بهمن 1390, 09:10 صبح
به نظر من کدنویسی ارزش بیشتری نسبت به استفاده از کامپوننت داره اما کدهای نوشته شده در تاپیک عقاب سیاه در یک خط است و برای Copy و Past کردن با مشکل مواجه هستم آیا روشی برای درست کپی کردن یا درج در تاپیک به گونه ایی که بتوان عملیات کپی را صحیح انجام داد وجود دارد

BORHAN TEC
یک شنبه 09 بهمن 1390, 10:18 صبح
کدنویسی ارزش بیشتری نسبت به استفاده از کامپوننت دارهاین تفکر شما من و خیلی یاد اختراع دوباره چرخ میندازه! :لبخند:

آیا روشی برای درست کپی کردن یا درج در تاپیک به گونه ایی که بتوان عملیات کپی را صحیح انجام داد وجود دارداحتمالاً شما از یک مرورگر قدیمی استفاده می کنید.:متفکر:

عقاب سیاه
یک شنبه 09 بهمن 1390, 16:53 عصر
من مخصوصا کد ها را در تگ مخصوص گزاشتم که مشکلی ایجاد نشه !
اگه با عوض کردن مرورگرتون مشک دارین یا کلا مشکل حل نشد بگید تا کد ها را یه جوری آپلود کنم!

mahdy.asia
دوشنبه 10 بهمن 1390, 09:48 صبح
اگه لطف کنید کدها در یونیت ضمیمه کنید متشکر می شم

عقاب سیاه
دوشنبه 10 بهمن 1390, 14:33 عصر
شرمنده دلفی دم دستم نوبد توی فایل تکست آپلود کردم
موفق باشید

hadisalahi2
دوشنبه 10 بهمن 1390, 17:46 عصر
من هم با نظر دوستان موافقم که استفاده از یک تکه کد بهتر از استفاده از یک کامپوننته.چون اکثر کامپوننت ها دارای کدهای بسیار زیادی هستند که ممکنه اصلا ما نیازی به اونها نداشته باشیم.
ولی کار آدم با دو تا تکه کد مثلا 100 خطی حل میشه چه نیازیه از یک کامپوننت استفاده کنی که شاید 1000 خط داشته باشه؟

BORHAN TEC
دوشنبه 10 بهمن 1390, 18:19 عصر
من هم با نظر دوستان موافقم که استفاده از یک تکه کد بهتر از استفاده از یک کامپوننته.چون اکثر کامپوننت ها دارای کدهای بسیار زیادی هستند که ممکنه اصلا ما نیازی به اونها نداشته باشیم.
ولی کار آدم با دو تا تکه کد مثلا 100 خطی حل میشه چه نیازیه از یک کامپوننت استفاده کنی که شاید 1000 خط داشته باشه؟ بسیاری از کامپوننت ها به صورت جدی قابل توسعه هستند ولی یک تکه کد چی؟ در بسیاری از موارد با آمدن سخت افزارها و سیستم عاملهای جدید و ... شما مجبورید که ساختار برنامه را تغییر دهید، که در آن صورت اگر از کامپوننت های مخصوص آن کار استفاده کرده باشید نحوه کار بسیار ساده تر خواهد بود که شما بدون دست زدن به کد اصلی به راحتی می توانید آن مشکل را حل کنید. برای حل این مشکلات مدل های مختلفی در دنیای نرم افزار تحت عنوان های Object Oriented Programming و Component Oriented Programming و Aspect Oriented Programming مطرح شده است که هدف کلی آن ها این است که ساخت و نگهداری نرم افزار را ساده تر کند، حال شما می آیید و با این عقیده اشتباه خود تجربه ده ها ساله مهندسان نرم افزار را زیر سوال می برید؟! :متعجب:
موفق باشید... :لبخندساده:

عقاب سیاه
دوشنبه 10 بهمن 1390, 18:29 عصر
اما اقای عشایری این کد ها صرفا جهت کد و دیکد کردن یه String هست نه چیز دیگر! :لبخند:
و واقعا از مطالبتون استفاده مردم مخصوصا از این آخریه! :کف:

BORHAN TEC
دوشنبه 10 بهمن 1390, 18:33 عصر
اما اقای عشایری این کد ها صرفا جهت کد و دیکد کردن یه String هست نه چیز دیگر!
آه :اشتباه: راست میگی. من در پست اول خونده بودم که دوستمون می خواست شماره سریال هارد رو بدست بیاره و بدون مطالعه کد شما تصور کردم که کد شما این کار رو انجام میده. :خجالت:

عقاب سیاه
دوشنبه 10 بهمن 1390, 18:36 عصر
من سريال هارد رو مي خوام تو رجيستري بصورت كد ذخيره كنم (براي جلوگيري از استفاده غيرمجاز از سيستم)
من که خودم شخصا برای شماره سریال هارد از همون کامپوننتی که گفتین استفاده می کنم واقعا عالیه!
ولی من فکر کدم سوالشون در مورد نحوه کد کردن نه نحوه بدست آوردن !
بهرحال فکر کنم با استفاده از اون کامپوننت + اون کد ها کل مشکل بر طرف شه!!

mahdy.asia
جمعه 14 بهمن 1390, 11:10 صبح
هدف کلی آن ها این است که ساخت و نگهداری نرم افزار را ساده تر کند، حال شما می آیید و با این عقیده اشتباه خود تجربه ده ها ساله مهندسان نرم افزار را زیر سوال می برید؟! :متعجب:
کدوم تجربه به شما یاد داده که سورس نرم افزار تان را به یکسری کامپوننت وابسته کنید .
1- وابستگی سورس شما به کامپوننت می تواند هنگام سوئیچ به نسخه های بالاتر Developer شما را با مشکل مواجه کند و مجبور نماید بدنبال نسخه جدید کامپوننت باشید که در نسخه جدید Developer درست کار کند
2- هر جا خواسته باشید سورس را باز کنید می بایست کامپوننت های استفاده شده را هم برای نصب همراه داشته باشید و اول کامپوننت ها را نصب کنید.
و ...

BORHAN TEC
جمعه 14 بهمن 1390, 13:42 عصر
1- وابستگی سورس شما به کامپوننت می تواند هنگام سوئیچ به نسخه های بالاتر Developer شما را با مشکل مواجه کند و مجبور نماید بدنبال نسخه جدید کامپوننت باشید که در نسخه جدید Developer درست کار کندمن هم یک سوال دارم: از کجا مطمئن هستید که کد شما حتماً در نسخه های بالاتر و در سیستم عامل های جدیدی که بعداً عرضه می شوند کار خواهد کرد؟
به هر حال من فکر نمی کنم که استفاده از کامپوننت های رایگان و در حال توسعه و OpenSource ریسک بالایی داشته باشد.

2- هر جا خواسته باشید سورس را باز کنید می بایست کامپوننت های استفاده شده را هم برای نصب همراه داشته باشید و اول کامپوننت ها را نصب کنید.به هر حال شما باید بدانید که برنامه شما از چه کامپوننت هایی استفاده کرده است. در ضمن من فکر نمی کنم که به جز پروژه های دانشجویی نیاز باشه که برنامه را در کامپیوتر های متعددی توسعه بدین. در هر حال شاید شما بخواهید چرخ را از اول بسازید!!!
این فقط پیشنهادات من به شما بود که البته این تجربیات اندک خود را هم با بدبختی های فراوانی بدست آورده ام!:گریه: و شما از هر روشی که دوست دارید می توانید استفاده کنید. :لبخندساده: