с CRYPT_STRING_NOCR ещё хуже Код (Text): 0040322B 2D 2D 2D 2D 2D 42 45 47 49 4E 20 43 45 52 54 49 -----BEGIN CERTI 0040323B 46 49 43 41 54 45 2D 2D 2D 2D 2D 0A 41 41 41 41 FICATE-----.AAAA 0040324B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040325B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040326B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040327B 41 41 41 41 41 41 41 41 41 41 41 41 0A 41 41 41 AAAAAAAAAAAA.AAA 0040328B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040329B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 004032AB 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 004032BB 41 41 41 41 41 41 41 41 41 41 41 41 41 0A 41 41 AAAAAAAAAAAAA.AA 004032CB 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 004032DB 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 004032EB 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 004032FB 41 41 41 41 41 41 41 41 41 41 41 41 41 41 0A 41 AAAAAAAAAAAAAA.A 0040330B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040331B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040332B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040333B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 0A AAAAAAAAAAAAAAA. 0040334B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040335B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040336B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040337B 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040338B 0A 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 .AAAAAAAAAAAAAAA 0040339B 41 41 41 41 41 41 41 3D 3D 0A 2D 2D 2D 2D 2D 45 AAAAAAA==.-----E 004033AB 4E 44 20 43 45 52 54 49 46 49 43 41 54 45 2D 2D ND CERTIFICATE-- 004033BB 2D 2D 2D 0A 00 ---..
вот есть просто функция для кодирования в баз64 Код (Text): ; Encodes data to base64 format Base64Encode proc uses esi edi ebx lpSrc, lpDst, dwSrcLen: DWORD mov esi, lpSrc mov edi, lpDst mov ecx, dwSrcLen xor ebx, ebx @l: jecxz @b64_ret lodsb shl eax, 16 cmp ecx, 1 jz @work lodsb shl ax, 8 cmp ecx, 2 jz @work lodsb @work: ; Output b64 quad mov edx, eax ror edx, 24 push ecx push 4 pop ecx @l2: call @b64_write loop @l2 pop ecx inc ebx .IF ebx == 18 xor ebx, ebx mov ax, 0a0dh stosw .ENDIF sub ecx, 3 jns @l ; Pad neg ecx sub edi, ecx mov al, '=' rep stosb @b64_ret: ret @b64_write: rol edx, 6 mov eax, edx and al, 00111111b cmp al, 62 jae @write_spec cmp al, 52 jae @write_number ; Uppercase add al, 'A' cmp al, 'A'+26 jb @write ; Lowercase add al, 6 jmp @write ; Number @write_number: add al, '0'-52 jmp @write ; Special: +/ @write_spec: sub al, 62 shl al, 2 add al, 43 @write: stosb retn Base64Encode endp
это я уже понял, но надо чтобы было вовсе без этого "мусора" а насщёт функции сам юзаю сейчас подобное, в сторону CryptBinaryToString смотрю для с целью уменьшения размера кода.
это конечно можно, но это как то через Ж... получается. Просто написал сдесь думал что можно её заставить работать нормально, ну рас нельзя будем извращятся.
Написал маленький парсер, мож кому пригодится. Код (Text): mov edi,pOut ;указатель на base64 строку mov esi,edi mov ecx,OutLen ;Длина строки cld @@: lodsb cmp al,0Ah je @b stosb test al,al jnz @b
2FED А еще проще было не кодировать сразу всю кучу, а сделать цикл по маленьким порциям. Дешево и сердито.