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

نام تاپیک: Hash - Code - Encryption

  1. #1

    Hash - Code - Encryption

    سلام؛

    بررسی سوالات و ابهامات متداول نشون میده عامه توسعه گران تفاوت Hash و Code و Encryption رو نمیدونن و اغلب این سه عنوان که مطلقا" به هم ربطی ندارن بجای دیگری بکار میرن ! سعی میکنم بدون وارد شدن به جزئیات بیش از حد فنی ، این سه عنوان رو کمی توضیح بدم .

    Hash : هش یا چکیدهء پیام یا هر اسم دیگه ای که روش میگذارن ، روشی برای تولید چکیده و خلاصه از یک پیام ، فایل و ... است . هش با استفاده از قواعد و الگوریتمهای مخصوص به خودش تلاش میکنه ، از هر چیزی که بهش داده میشه ، یک چکیده با طولی همیشه ثابت تولید کنه . به عنوان مثال الگوریتم MD5 که یکی از روشهای متداول تولید هش است ، به ازای هر نوع ورودی که دریافت کنه ( چه یک حرف باشه چه یک فایل ده گیگا بایتی ) همیشه ، فقط و فقط 128 بیت خروجی تولید میکنه . این خروجی 128 بیتی ، تا وقتی فایل یا پیام تغییر نکرده باشه ، همیشه ثابت خواهد بود . نتیجه : استفاده از هش برای تولید چکیده میتونه روش خوبی برای بررسی تغییر یا عدم تغییر در یک پیام یا فایل باشه . نتیجه بعد : خروجی تولید شده توسط یک الگوریتم هش هرگز به موجودیت اولیه قابل بازگردانی نیست . کاربرد : تولید امضای دیجیتال . حوزه کاربرد : عموما" سیستمهای مبتنی بر PKI .

    Code : کد یا درهم ریزی یا هر اسم دیگه ای که روش میگذارن ، از یک جفت الگوریتم تشکیل میشه . اولی پیام یا فایل رو encode میکنه ( مثلا" : غیر قابل خواندن ) و دومی اون رو decode میکنه ( مثلا" : قابل خواندن ) . یعنی یک روش تولید و استفاده از Code همیشه از دو جزء متقارن تشکیل میشه که با داشتن یکی ، تولید اون یکی کار دشواری نخواهد بود . اگر شما یک فایل رو بگیرین و به هر کاراکتر 12 تا اضافه کنین و خروجی رو برای فرد دیگری بفرستین که او با خوندن هر کاراکتر و کسر 12 تا از هر کدوم ، بتونه به فایل اصلی دست پیدا کنه ، شما coding انجام دادین . نتیجه : کد صرفا" شکل پیام یا فایل رو بصورتی متقارن تغییر میده . نتیجه بعدی : کد لزوما از دو قسمت قرینه هم تشکیل میشه . کاربرد : انتقال پیام یا فایل روی محیطهائی که برای پردازش حروف و علائم از کدپیجهای متفاوت استفاده میکنن ، یا انتقال وصله های ایمیلها و ... . حوزه کاربرد : انتقال اطلاعات .


    نتیجه اول : هش و کد ارتباط مستقیمی با رمزنگاری ندارند . هیچکدام یک روش رمزنگاری محسوب نمیشن و وجودشون در یک سیستم رمزنگاری الزامی نیست .

    نتیجه دوم : هش به موجودیت اولیه قابل بازگردانی نیست . به هیچ وجه . کد به حالت اولیه قابل بازگردانی است . به سادگی .


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

    روشهای متقارن رمزنگاری : این روشهای از لزوما" یک الگوریتم و حداقل یک کلید استفاده میکنن . مثال : DES

    روشهای غیر متقارن : این روشها از حداقل یک الگوریتم و حداقل دو کلید استفاده میکنن . مثال : RSA .

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

    ایام به کام :)
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1384
    محل زندگی
    ایران-قم
    پست
    457
    دستت درد نکنه nprise جان. برای من که تا حالا هیچی نمی دونیستم خیلی عالی بود.
    اگه میشه راجع به Encryption یه کمی بیشتر توضیح بده.

  3. #3
    کاربر دائمی آواتار hmm
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ایران - یزد
    پست
    1,229
    ببخشید وسط بحث علمی دنبال دمپایی میگردم!!!
    یه سوال:
    اگه رمزگذاری متقارن که به گفته جناب inprise "از لزوما" یک الگوریتم و حداقل یک کلید استفاده میکنن"
    برای الگوریتم اضافه/کم کردن حروف در نظر بگیریم و عدد 12 همون کلیدمون باشه آیا از کد استفاده شده یا از رمزگذاری؟

    کسی دمپایی منو ندیده!!!

  4. #4
    اقای Inprise مقالک جالبی بود .
    دستتون درد نکنه.

  5. #5
    کاربر جدید آواتار vandjalili
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    تبریز - مراغه - اهر
    پست
    8
    جالب بود

    خوب حالا روش های برنامه نویسی رمزنگاری رو اگه میشه توضیح بدین مخصوصا وی بی و سی پلاس پلاس

  6. #6
    یک فایل آموزش سریع رمز گذاری می خواهم........................................ .......

  7. #7
    سلام inprise
    همیشه مقاله ها ت رو می خونم خیلی جالبند بعضی هاشو اصلا نمی فهمم ممنون از اینکه زحمت می کشی
    ------------
    موفق باشی
    ------------------------------------
    وقتی گریم می گیره هنوز امیدوار می شم که جون دارم

  8. #8
    کاربر دائمی آواتار dot_net_lover2
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    شیراز
    پست
    324
    1.میشه در مورد استفاده Encryption در SSL هم توضیحاتی بدین.
    2.در مورد HASH و استفاده آن در امضای دیجیتال ، اگر بصورت Plain text از سمت Client به Server ارسال شود و حال در این نقل و انتقال یک اسنیفر یا چیزی شبیه اینجور برنامه های هک وجود داشته باشد که تمامه Plain text ها را در DB خود Save کند و سپس از این DB میتواند جهت کارهای خود بهره ببرد مثلا به Account یک User وارد شود.
    البته باید بگویم که جناب Inprise بیان کردند که کاربرد : تولید امضای دیجیتال.
    پس به همین دلیل پیشنهاد میشود در همچنین سیستم هایی حتما از SSL جهت Encrypt شدن Plain Text ها هنگام نقل و انتقال استفاده نمایید.

  9. #9
    سلام به همگی

    می خوام یه کتاب معرفی کنم که پاسخ پرسش های خیلی ها رو توی زمینه امنیت می تونه بده.

    کتاب "امنیت داده ها"
    تألیف مهندس احسان ملکیان (البته ایشون به زودی دکتراشون تموم می شه)
    انتشارات نص

    و اما موضوعاتی که توی این کتاب گفته شده:
    1- مبانی و چارچوب امنیت اطلاعات
    2- روشهای رمزنگاری پیشرفته (متقارن و کلید عمومی)
    متقارن شامل: DES و AES (که هم اکنون استاندارد جهانی است) IDEA و Serpent و RC6
    کلید عمومی شامل: RSA و ElGamal (بخوانید الجمال-به نام ابداع کننده آن، دکتر طاهر الجمال)
    3- اصول تحلیل رمز و رمزشکنی
    (تا اینجا 10 فصل - کل کتاب 16 فصله)
    4- روش های تولید چکیده پیام ((MD5- SHA(1)-SHA(2) و الگوهای امضای دیجیتال
    5- گواهینامه های دیجیتالی و ساختار Public Key Infrastructure - PKI
    6- مکانیزم های احراز هویت و Kerberos
    7- امنیت در لایه های شبکه و مفاهیم IPSec - *** - Firewall - IDS - SSL - SET و کارت های هوشمند

    این کتاب تازه به چاپ رسیده و توصیه می کنم علاقمندان به این موضوعات حتماً اونو بخونن.

  10. #10
    کد اصلاح شده تابع HashCrypt که می تونه برای هش، encrypt و decrypt کردن یک رشته کاراکتر به کار بره رو اینجا میگذارم. کد به زبان اسمبلی 32 بیتی و با کامپایلر Masm32 نوشته شده. فایل dll شامل تابع hashcrypt، و نمونه کدی برای استفاده از اون در محیط دلفی رو هم اضافه کردم که نشون میده چطور میشه یه رشته رو هش کرد.
    پارامتر اول lpstring1:
    برای مد encryption/decryption کلید عمومی و برای مد hash رشته کاراکتری که باید هش شود (مثل پارامتر دوم)
    پارامتر دوم lpstring2:
    برای مد encryption/decryption رشته کاراکترهایی که باید encrypt/decrypt شوند که به عنوان پارامتر ورودی و خروجی استفاده میشه و برای مد hash رشته کاراکتری که باید هش شود (مثل پارامتر اول)
    پارامتر سوم dwLength:
    طول رشته ارسالی(پارامتر دوم)
    پارامتر چهارم flag:
    0 برای hashing و 1 برای encryption و 2 برای decryption

    .386
    .model flat,stdcall
    option casemap:none
    include \masm32\include\windows.inc
    include \masm32\include\advapi32.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc

    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    includelib \masm32\lib\advapi32.lib

    StrM MACRO data:VARARG
    LOCAL Buff
    .data
    Buff db data, 0h
    .code
    exitm <addr Buff>
    ENDM

    ByteToStr PROTO :DWORD, :DWORD, :DWORD

    .const
    PKCS_7_ASN_ENCODING equ 00010000h
    X509_ASN_ENCODING equ 00000001h

    ALG_SID_MD5 equ 00000003h
    ALG_SID_RC4 equ 00000001h
    ALG_SID_RC2 equ 00000002h

    PROV_RSA_FULL equ 00000001h
    HP_HASHVAL equ 00000002h

    ALG_CLASS_ANY equ 00000000h
    ALG_CLASS_SIGNATURE equ 00002000h
    ALG_CLASS_MSG_ENCRYPT equ 00004000h
    ALG_CLASS_DATA_ENCRYPT equ 00006000h
    ALG_CLASS_HASH equ 00008000h
    ALG_CLASS_KEY_EXCHANGE equ 0000A000h

    ALG_TYPE_ANY equ 00000000h
    ALG_TYPE_DSS equ 00000200h
    ALG_TYPE_RSA equ 00000400h
    ALG_TYPE_BLOCK equ 00000600h
    ALG_TYPE_STREAM equ 00000800h
    ALG_TYPE_DH equ 00000A00h
    ALG_TYPE_SECURECHANNEL equ 00000C00h

    CRYPT_VERIFYCONTEXT equ 0F0000000h
    CRYPT_EXPORTABLE equ 00000001h

    CALG_MD5 equ ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_MD5
    CALG_RC4 equ ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_STREAM OR ALG_SID_RC4
    CALG_RC2 equ ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_RC2

    HCRYPTPROV TYPEDEF DWORD
    HCRYPTKEY TYPEDEF DWORD
    HCRYPTHASH TYPEDEF DWORD

    NTE_BAD_LEN equ 80090004h
    NTE_BAD_DATA equ 80090005h


    .data
    LibName db "IoECrypt.dll", 0


    .code

    DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD
    mov eax, TRUE
    ret
    DllEntry Endp

    ShowMessage PROC uses eax ebx ecx edx esi edi lpMessage:DWORD
    invoke MessageBox, 0, lpMessage, addr LibName, MB_OK
    ret
    ShowMessage endp


    HashCrypt proc uses esi edi ebx ecx edx lpstring1:DWORD, lpstring2:DWORD, dwLength:DWORD, flag:DWORD
    LOCAL hCryptProv: HCRYPTPROV
    LOCAL hHash : HCRYPTHASH
    LOCAL hCryptKey : HCRYPTKEY
    LOCAL dwi : DWORD
    LOCAL sHash[512]: BYTE

    invoke CryptAcquireContext, ADDR hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT
    .IF eax != 0
    invoke CryptCreateHash, hCryptProv, CALG_MD5, 0, 0, ADDR hHash
    .IF eax != 0
    invoke lstrlen, lpstring1
    mov dwi, eax
    invoke CryptHashData, hHash, lpstring1, dwi, 0
    .IF eax != 0
    .IF flag == 0
    mov dwi, SIZEOF sHash
    invoke CryptGetHashParam, hHash, HP_HASHVAL, ADDR sHash, ADDR dwi, 0
    .IF eax != 0
    invoke ByteToStr, dwi, ADDR sHash, lpstring2
    invoke CryptDestroyHash, hHash
    .ENDIF
    .ELSE
    push dwLength
    pop dwi
    invoke CryptDeriveKey, hCryptProv, CALG_RC4, hHash, CRYPT_EXPORTABLE, ADDR hCryptKey
    .IF eax != 0
    invoke CryptDestroyHash, hHash
    .IF flag==1
    invoke CryptEncrypt, hCryptKey, 0, TRUE, 0, lpstring2, ADDR dwi, dwi
    .if eax == 0
    invoke GetLastError
    .if eax == NTE_BAD_DATA
    invoke ShowMessage, StrM("Error NTE_BAD_DATA")
    .elseif eax == NTE_BAD_LEN
    invoke ShowMessage, StrM("Error NTE_BAD_LEN")

    .endif
    .endif
    .ELSE
    invoke CryptDecrypt, hCryptKey, 0, TRUE, 0, lpstring2, ADDR dwi
    .if eax == 0
    invoke GetLastError
    .if eax == NTE_BAD_DATA
    invoke ShowMessage, StrM("Error NTE_BAD_DATA")
    .elseif eax == NTE_BAD_LEN
    invoke ShowMessage, StrM("Error NTE_BAD_LEN")

    .endif
    .endif
    .ENDIF
    invoke CryptDestroyKey, hCryptKey
    .ENDIF
    .ENDIF
    invoke CryptReleaseContext, hCryptProv, 0
    .ENDIF
    .ENDIF
    .ENDIF
    mov eax, dwi
    ret
    HashCrypt endp


    ByteToStr PROC Len:DWORD, pArray:DWORD, pStr:DWORD
    mov ecx, Len
    mov esi, pArray
    mov edi, pStr
    @@:
    mov al, byte ptr [esi]
    and al, 0F0h
    shr al, 4
    .IF al <= 9
    add al, "0"
    mov byte ptr [edi], al
    .ELSE
    sub al, 10
    add al, "A"
    mov byte ptr [edi], al
    .ENDIF
    inc edi
    mov al, byte ptr [esi]
    and al, 0Fh
    .IF al <= 9
    add al,"0"
    mov byte ptr [edi], al
    .ELSE
    sub al, 10
    add al, "A"
    mov byte ptr [edi], al
    .ENDIF
    inc edi
    inc esi
    dec ecx
    cmp ecx, 0
    jnz @B
    mov byte ptr [edi], 0
    xor eax, eax
    ret
    ByteToStr ENDP

    End DllEntry


    لینک دریافت dll:
    http://www.ideasofeast.com/Download/...e/IoECrypt.zip

    طرز استفاده در دلفی:

    unit Unit_Main;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    Edit2: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    THashCrypt = function(lpszString1, lpszString2: LPCSTR; dwLength, flag :DWORD):DWORD; stdcall;

    var
    Form1: TForm1;
    hCryptDll: THandle;
    HashCrypt: THashCrypt;


    implementation

    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    hCryptDll := LoadLibrary('IoECrypt.dll');
    if hCryptDll <> 0 then
    @HashCrypt := GetProcAddress(hCryptDll, 'HashCrypt');
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    EncryptedSN : array [0..32] of char;
    begin
    StrCopy(EncryptedSN, PChar(Memo1.Text));
    HashCrypt(EncryptedSN, EncryptedSN, StrLen(EncryptedSN), 0);
    Edit2.Text := EncryptedSN;
    end;

    end.

  11. #11

    یک کمک فوری

    با عرض سلام و خسته نباشید به تمام برو بچ انجمن
    من یک مشکلی در باره رمز نگاری پیدا کردم
    مشکل من اینکه نمیتونم با کلید خصوصی (Privet key) رمز گذاری (Encrypt) کنم
    من این مطلب رو تو ساید ویکی پدیا برسی کردم که میگه میشه و برای امضای دیجیتال استفاده می کنند.
    این هم لینکش
    http://en.wikipedia.org/wiki/Public-key_cryptography
    http://en.wikipedia.org/wiki/Image:P...ey_signing.svg

    Help Me

  12. #12

    نقل قول: Hash - Code - Encryption

    امنترین روش برای کد کردن سریال نامبر برنامه چی هست؟ rsa ؟
    من یک سری اطلاعاتو میخوام کد کنم و بدم کاربر و سیستم هم اون متن کد شده میگیره و دیکد کنه و اگر درست بود کار کنه. مهم نیست که این کار امنیتش چقدر هست اما برام مهمه که متن عبارت فهمیده نشه.
    خیلی ممنون

  13. #13
    کاربر دائمی آواتار saeedIRHA
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Eclipse
    سن
    38
    پست
    605

    نقل قول: Hash - Code - Encryption

    امنترين الگوريتم رمزنگاری Vernam یا One-Time Pad
    https://barnamenevis.org/showth...ghlight=vernam

  14. دوشنبه 18 اردیبهشت 1391, 11:52 صبح

    دلیل
    تکراری

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

  1. استفاده از hash code
    نوشته شده توسط eberham در بخش VB.NET
    پاسخ: 1
    آخرین پست: جمعه 17 فروردین 1386, 22:52 عصر
  2. اشکال در encryption
    نوشته شده توسط veria در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 2
    آخرین پست: سه شنبه 25 مرداد 1384, 09:56 صبح
  3. Encryption
    نوشته شده توسط najeeb در بخش SQL Server
    پاسخ: 20
    آخرین پست: شنبه 04 مهر 1383, 23:33 عصر

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

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