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

نام تاپیک: اشکال در encryption

  1. #1

    اشکال در encryption

    لطفا به من بگید که چه اشکالی در کد زیر وجود داره که در بعضی شرایط (که ویژگی اون شرایط برای من قابل تشخیص نیست) در encrypt کردن داده ها بر به این مشکل می خوره که فقط بخشی از داده ها (از ابتدای اونها) را encrypt میکنه. این مساله در نظر اول به نظر می رسه که مربوط به حجم داده ها نباشه چون با تغییر کاراکتری از کاراکترهای ورودی که encryption از اونجا به بعد قطع میشه بعضا تا 20-30 کاراکتر به تعداد کاراکترهای encrypt شده اضافه می شه.
    پارامتر اول کلید عمومی- پارامتر دوم رشته کاراکترها که به عنوان ورودی و خروجی استفاده میشه - پارامتر سوم 0 برای hashing و 1 برای encryption و 2 برای decryption

    CryptMe proc uses esi edi lpstring1: DWORD,lpstring2: DWORD,flag: DWORD
    LOCAL hCryptProv:HCRYPTPROV
    LOCAL hHash :HCRYPTHASH
    LOCAL hCryptKey :HCRYPTKEY
    LOCAL dwLength : DWORD
    LOCAL sHash[512]:BYTE

    invoke CryptAcquireContext,ADDR hCryptProv,NULL,NULL,PROV_RSA_FULL,CRYPT_VERIFYCON TEXT
    .IF eax!=0
    invoke CryptCreateHash,hCryptProv,CALG_MD5,0,0,ADDR hHash
    .IF eax!=0
    invoke lstrlen,lpstring1
    mov dwLength,eax
    invoke CryptHashData,hHash,lpstring1,dwLength,0
    .IF eax!=0
    .IF flag==0
    mov dwLength,SIZEOF sHash
    invoke CryptGetHashParam,hHash,HP_HASHVAL,ADDR sHash,ADDR dwLength,0
    .IF eax!=0
    invoke ByteToStr,dwLength,ADDR sHash,lpstring2
    invoke CryptDestroyHash,hHash
    .ENDIF
    .ELSE
    invoke CryptDeriveKey,hCryptProv, CALG_RC4, hHash, CRYPT_EXPORTABLE, ADDR hCryptKey
    .IF eax!=0
    invoke CryptDestroyHash,hHash
    invoke lstrlen,lpstring2
    mov dwLength,eax
    .IF flag==1
    invoke CryptEncrypt,hCryptKey,0,TRUE,0,lpstring2,ADDR dwLength, dwLength
    .ELSE
    invoke CryptDecrypt,hCryptKey,0,TRUE,0,lpstring2,ADDR dwLength
    .ENDIF
    invoke CryptDestroyKey,hCryptKey
    .ENDIF
    .ENDIF
    invoke CryptReleaseContext,hCryptProv,0
    .ENDIF
    .ENDIF
    .ENDIF
    ret
    CryptMe endp

  2. #2
    lpstring هات رو از نوع DWORD معرفی کردی که سایزش طبیعتا" مشخص و ثابته ، اما تو متن برنامه مانند استرینگ باهاش برخورد کردی ( lstrlen ? WTF ) تابع مذکور سایز رشته رو بدون در نظر گرفتن خاتمه برمیگردونه و تو مبتنی بر این محاسبه که منطقش غلطه کار رو ادامه میدی ، در حالیکه DWORD های تو رشته نیستند که انتهاشون خاتمه داشته باشه و بشه ازشون چشمپوشی کرد . امیدوارم روشن باشه...

  3. #3
    Inprise
    پارامترها از نوع pointer به string هستند نه string ، و از این نظر مشکلی وجود نداره. موقع فراخوانی تابع آدرس buffer ها به عنوان پارامتر فرستاده میشه.
    موقع استفاده از پارامترها هم در تابعی مثل lstrlen اگه دقت کنی به جای addr پارامتر خود پارامتر فرستاده می شه. مشکل چیز دیگه اس که من ازش سر در نمی آرم.

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

  1. Encryption!!!!! It can't STOP ME
    نوشته شده توسط majid_afra222 در بخش SQL Server
    پاسخ: 6
    آخرین پست: شنبه 10 مرداد 1388, 21:35 عصر
  2. SQL Server Encryption
    نوشته شده توسط godfather4ir در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: چهارشنبه 14 تیر 1385, 08:23 صبح
  3. Encryption
    نوشته شده توسط najeeb در بخش SQL Server
    پاسخ: 20
    آخرین پست: شنبه 04 مهر 1383, 23:33 عصر
  4. Encryption
    نوشته شده توسط Farhad.B.S در بخش ASP.NET Web Forms
    پاسخ: 8
    آخرین پست: سه شنبه 08 مهر 1382, 19:01 عصر

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

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