نمایش نتایج 1 تا 14 از 14

نام تاپیک: راهنمایی Encrypt / Decrypt

  1. #1

    Question راهنمایی Encrypt / Decrypt

    سلام

    من دنبال الگریتم که یه متغییر String رو Encrypt / Decrypt کنه و با خروجی String تحویل بده که فارسی رو هم ساپورت کنه هستم

    هرچی تو انجمن و سایت ها گشتم مطلبی پیدا نکردم که مشکل من حل کنه

    ممنون میشم اگه راهنمایی کنید

  2. #2

    Lightbulb نقل قول: راهنمایی Encrypt / Decrypt



    function EncryptStr(const S: String; Key: Word): String;
    var I: Integer;
    const C1 = 53761;
    C2 = 32618;
    begin
    Result := S;
    for I := 1 to Length(S) do begin
    Result[I] := char(byte(S[I]) xor (Key shr 8));
    Key := (byte(Result[I]) + Key) * C1 + C2;
    end;
    end;

    function DecryptStr(const S: String; Key: Word): String;
    var I: Integer;
    const C1 = 53761;
    C2 = 32618;
    begin
    Result := S;
    for I := 1 to Length(S) do begin
    Result[I] := char(byte(S[I]) xor (Key shr 8));
    Key := (byte(S[I]) + Key) * C1 + C2;
    end;
    end;


  3. #3

    نقل قول: راهنمایی Encrypt / Decrypt

    سلام.
    اگرچه من گشتم و بود، اما براتون توضیح می دم:
    شما علاوه بر استفاده از الگوریتم هایی مثل زیپ () به همراه پسورد روی حافظه (که پروسه طولانی ای داره) می تونید بصورت سفارشی الگوریتم خودتون رو پیاده کنید.
    این الگوریتم ها می تونند بازگشت پذیر یا بازگشت ناپذیر باشند.
    الگوریتم های بازگشت ناپذیر معمولا طول های کوتاهی می دند، مثل HashCode ها، SHA1 و این چیزا، و معمولا برای ذخیره رمز عبور مناسب هستند.
    الگوریتم های بازگشت پذیر برای ذخیره یا انتقال داده مورد استفاده قرار می گیرند.
    این الگوریتم ها با افزایش طول داده، خروجی شون افزایش پیدا می کنه.
    بهترین الگوریتم ها اونهایی هستند که به ازای افزایش n بایت، در خروجی چیزی غیر از n بایت افزایش داشته باشند. یعنی بصورت یک به یک نباشند.
    نکته دیگه این که اگر قراره مثلا A بشه X، در همه جای متن نباید A بشه X (ماشین انیگما از همین روش استفاده می کرد) ولی بدونید که ممکنه حتی گاهی A بشه A (ماشین انیگما رو از همین نقطه ضعف رمزگشایی کردند!!)
    کدینگ مورد استفاده باید دامنه از قبل تعریف شده ای داشته باشه، مثلا اگر فقط قراره اعداد رو ساپورت کنه، می تونید دو عدد رو در یک بایت خلاصه کنید تا اوضاع پیچیده تر بشه.
    در نهایت می تونید از Salt کردن استفاده کنید، به این معنی که بخشی رو بصورت دستی وارد داده می کنید تا رمزگشایی اون سخت تر بشه.

    الگوریتم های ساده ای مثل شیفت بیتی، و جمع و منها با یک عدد می تونن مورد استفاده باشن، تا XOR و الگوریتم های پیچیده تری که حساس به مکان حضور کاراکتر در رشته باشند.
    عجیبه که هنوز برنامه هایی رو می بینم که رمز گذاری شون آدم رو به خنده می ندازه، یکی از همین برنامه ها رو (اسم نمی برم، فقط بدونید داده هاش برای تولید جدول بود) همین پریروز ظرف 3 دقیقه تشخیص دادم و در 5 ساعت براش دیکد نوشتم.
    این رو هم در نظر داشته باشید که هرقدر الگوریتم پیچیده تر باشه، دیکدش بیشتر طول می کشه. پس باید تصمیم درستی در این زمینه بگیرید.

    یکی از الگوریتم های خودم رو براتون می گذارم. فقط محض راه افتادن دست شما:

    uses StrUtils, Math;


    function CodeIt(s, key: string): string;
    var
    b, k: byte;
    i, j: integer;
    begin
    Result := '';
    Randomize;
    s := IntToHex(length(s), 4) + s;
    s := s + DupeString(Chr(RandomRange(33, 120)), 16 -length(s) mod 16);
    i := 0;
    j := 0;
    k := RandomRange(0, 255);
    repeat
    inc(i);
    if i > length(s) then Break;
    j := (j mod length(key)) +1;
    b := Ord(s[i]);
    b := b xor k xor Ord(key[j]);
    Result := Result + IntToHex(b, 2);
    until false;
    Result := IntToHex(k, 2) + ReverseString(Result) + IntToHex(RandomRange(0, 255), 2);
    end;


    function HexToByte(Hex: string): byte;
    function HexToHalf(X: char): byte;
    begin
    case X of
    '0'..'9': Result := Ord(X) -48;
    else Result := Ord(X) -55;
    end;
    end;


    begin
    Result := 0;
    Result := HexToHalf(Hex[1]) * 16 + HexToHalf(Hex[2]);
    end;


    function DecodeIt(s, key: string): string;
    var
    b, k: byte;
    t: string;
    i, j: integer;
    begin
    Result := '';
    t := Copy(s, 1, 2);
    k := HexToByte(t);
    Delete(s, 1, 2);
    s := Copy(ReverseString(s), 3, length(s));
    i := 0;
    j := 0;
    t := '';
    repeat
    inc(i, 2);
    if i > length(s) then Break;
    j := (j mod length(key)) +1;
    b := HexToByte(s[i -1] + s[i]);
    b := b xor k xor Ord(key[j]);
    Result := Result + Chr(b);
    until false;
    t := Copy(Result, 1, 4);
    Delete(Result, 1, 4);
    j := HexToByte(t[1] + t[2]) * 256 + HexToByte(t[3] + t[4]);
    Result := Copy(Result, 1, j);
    end;


    procedure TForm1.CodeBtnClick(Sender: TObject);
    begin
    Edit2.Text := CodeIt(Edit1.Text, 'yousef zalli');
    end;


    procedure TForm1.DecodeBtnClick(Sender: TObject);
    begin
    Caption := DecodeIt(Edit2.Text, 'yousef zalli');
    end;




    این الگوریتم برای متنی مثل salam در هر دفعه یک چیز می ده، در هر کدوم هم a ها با هم تفاوت دارند.
    طول خروجی در این الگوریتم رابطه یک به یک با ورودی نداره.
    الگوریتم سالت شده.
    الگوریتم کلید داره.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  4. #4

    نقل قول: راهنمایی Encrypt / Decrypt

    ببخشیذ کدو وارد کردم میکنم ولی موقع Compile این خطا رو میده

    [Hint] Test.dpr(101): Value assigned to 'HexToByte' never used

  5. #5

    نقل قول: راهنمایی Encrypt / Decrypt

    دست درد نکنه You-See
    من از دلفی 7 استفاده میکنم از اونجایی که آشنایی کمی با دلفی دارم گفتم که ذکر کنم
    من دارم یک برنامه درست میکنم که تمام خطهای یک فایل متنی رو در متغیر با عنوان All: string; ثبت میکنه میخوام این کدی که دادین اونو در صورتی اینکریپ باشه دیکریپت کنه و بلعکس
    ممنون میشم از دوستان اگه می تونن راهنمایی کنید

  6. #6

    نقل قول: راهنمایی Encrypt / Decrypt

    می تونید از الگوریتم های متقارن استفاده کنید.
    این الگوریتم نمی تونه تشخیص بده که کد شده دارید بهش می دید یا دیکد شده.
    اصولا هیچ الگوریتمی نمی تونه تشخیص بده.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  7. #7

    Post تکمیل کد

    میشه به این کد نگاه کنید و کدهای Encryption و Decryption در جاهای مشخص قرار بدید

    متغییری که کد و اینکد میشه از نوع String هستش All میخوام فایل کد شده و یا اینکد شده هم از نوع String باشه

    من با دلفی 7 کار میکنم


    library Test;

    uses
    SysUtils, Windows, Classes, System;

    {$R *.res}
    procedure Test1; cdecl;

    var
    F : TextFile;
    s: string;
    All: string;
    Begin
    All := '';
    AssignFile(F, 'D:\Code.txt');
    Reset(F);
    while not Eof(F) do
    begin
    Readln(F, s);
    All := All + CHR(13)+CHR(10) + s;
    end;
    ////////////////
    /////////Encryption "All"
    ////////////////
    end;

    procedure Test2; cdecl;

    var
    F : TextFile;
    s: string;
    All: string;
    Begin
    All := '';
    AssignFile(F, 'D:\Code.txt');
    Reset(F);
    while not Eof(F) do
    begin
    Readln(F, s);
    All := All + CHR(13)+CHR(10) + s;
    end;
    ////////////////
    /////////Decryption "All"
    ////////////////
    end;
    exports
    Test1, Test2;
    begin
    end.

  8. #8

    نقل قول: راهنمایی Encrypt / Decrypt

    حاجی روانیه این کدهاتم به خدا
    این که هر دفعه یه کد تولید میشه، خیلی جالبه.
    البته برای من روی DXe فارسی رو جواب نداد. فقط انگلیسی رو جواب داد.


  9. #9

    نقل قول: راهنمایی Encrypt / Decrypt

    کدها یونیکد نیست و ورژن هفتیه. ورژن بالاترش رو برات می دم. خصوصی بیا.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  10. #10

    نقل قول: راهنمایی Encrypt / Decrypt

    کدها یونیکد نیست و ورژن هفتیه. ورژن بالاترش رو برات می دم. خصوصی بیا.
    من همینک به این نتیجه ای رسیدم که حمزه رسیده
    فارسی رو جواب نمیده
    لطفا اگه میشه بزار تا ما هم از اون جدیداش استفاده کنیم

  11. #11

    نقل قول: راهنمایی Encrypt / Decrypt

    هادی شب بیا ریموت بده رو سیستمت درست کنم، یونیکد ورژن دلفی رو نصب ندارم.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  12. #12

    نقل قول: راهنمایی Encrypt / Decrypt

    هادی شب بیا ریموت بده رو سیستمت درست کنم، یونیکد ورژن دلفی رو نصب ندارم.
    متاسفانه شب در منزل نت ندارم و الان هم در محل کار فقط نت دارم

    اگه از دست خودم بر میاد بگو تا انجام بدم
    من دلفی XE2 کار میکنم

  13. #13

    نقل قول: راهنمایی Encrypt / Decrypt

    با تریس کردن قدم به قدم باید ببینید که کاراکتر های یونیکد که حالا دو بایتی هستند، چطور باید در توابع، عملیاتی بشن، مثلا byte و Ord و این چیزا رو باید بازنگری کنید.
    توابع رشته ای رو هم باید تریس کنید ببینید که ورودی / خروجی شون به چه نحوه.
    همین.
    خیلی سخت نیست.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  14. #14
    کاربر دائمی آواتار gholami146
    تاریخ عضویت
    آبان 1388
    محل زندگی
    مشهد مقدس
    پست
    374

    نقل قول: راهنمایی Encrypt / Decrypt

    سلام دوست عزیز چطوری تو انجمن گشتی و تو نت که پیداش نکردی من حتی خودم یادم میاد کامپوننتی رو برای همین کار بهمرته آموزش استفاده از اون تو انجمن قرار دادم که اگه بگردی پیداش می کنی
    این کامپوننت خیلی با ارزش دانلود کنید

    {توضیح مدیر: ممکنه خیلی ها مسلمان نباشند. اجرتون با خدا}
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله یوسف زالی : چهارشنبه 15 بهمن 1393 در 19:53 عصر

تاپیک های مشابه

  1. سوال: الگوریتم رمزنگاری Encrypt / Decrypt
    نوشته شده توسط negar.rafie در بخش C#‎‎
    پاسخ: 48
    آخرین پست: سه شنبه 04 خرداد 1395, 07:46 صبح
  2. گفتگو: نظرتون راجع به این encryption/decryption چیه ؟
    نوشته شده توسط MSN_Issue در بخش PHP
    پاسخ: 9
    آخرین پست: چهارشنبه 06 مهر 1390, 20:41 عصر
  3. Encrypt/Decrypt دادهای دیتابیس
    نوشته شده توسط proreza در بخش C#‎‎
    پاسخ: 4
    آخرین پست: پنج شنبه 06 آبان 1389, 03:28 صبح
  4. سوال: Encryption/Decryption
    نوشته شده توسط fallah_mojtaba در بخش C#‎‎
    پاسخ: 4
    آخرین پست: یک شنبه 17 شهریور 1387, 22:00 عصر
  5. Encrypt/Decrypt کردن فایل ها
    نوشته شده توسط Delphi-Man در بخش برنامه نویسی در Delphi
    پاسخ: 14
    آخرین پست: شنبه 19 آبان 1386, 03:11 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •