Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Par "jednostavnih" algoritama...

[es] :: Security :: Kriptografija i enkripcija :: Par "jednostavnih" algoritama...

[ Pregleda: 3964 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksandar Marković
Part Time Freelance Journalist

Član broj: 219
Poruke: 5220
*.verat.net

Sajt: www.akcenat.info


+8 Profil

icon Par "jednostavnih" algoritama...26.07.2001. u 19:26 - pre 276 meseci
Nije najsigurniji ali....

invoke ReadFile, hFile, pMem, hSize, addr hRead, 0

mov esi, pMem
mov ecx, hSize
mov al, 123
xorit:
xor [esi], al
inc esi
loop xorit


2)

invoke GetTickCount ; pseudo-random number
mov edx,eax ; edx= key

lea esi,start
mov esi,edi
mov ecx,size

kripter:

lodsd
xor eax,edx ; isto i za sifovanje i dekripciju
stosd
loop kripter


3)

mov edx, 010011100000111111110000000000000b
kripter:
ror edx, 1
lodsd
xor eax, edx
stosd
loop kripter

4)
; ###########################################################################

XorData proc lpSource:DWORD,ln:DWORD,lpKey:DWORD,lnKey:DWORD

LOCAL lref :DWORD ; brojac reference za key char poziciju
LOCAL pcnt :DWORD
LOCAL bvar :BYTE

push ebx
push esi
push edi

mov eax, lpKey
mov pcnt, eax
add eax, lnKey
mov lref, eax

mov esi, lpKey
mov al,[esi]
mov bvar, al ; stavlja prvi bajt u bvar

mov ecx, ln
mov esi, lpSource
mov edi, lpSource

xsSt:
mov al,[esi] ; kopira prvi bajt source u al
inc esi

xor al, bvar ; xor al sa sledecim bajtom u bvar

; ====== Ovaj kod "resava" sudbinu prvog bajta u key string ======
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push eax
push esi

inc pcnt ; "increment" bajt adresu
mov esi, pcnt ; prebacuje u esi
mov al,[esi]
inc esi

mov ebx, lref
cmp pcnt, ebx
jne @F

mov edx, lpKey ; stavlja "key" pocetnu adresu u edx
mov pcnt, edx ; resetuje pcnt
mov esi, pcnt ; stavlja adresu u esi

mov al,[esi]
inc esi

@@:
mov bvar, al

pop esi
pop eax
; ============================================================

mov [edi], al
inc edi
dec ecx

cmp ecx, 0
jne xsSt

pop edi
pop esi
pop ebx

ret

XorData endp

; ###########################################################################

5)

XorHalf PROC Buff:DWORD, Length:DWORD
mov ecx, Length
mov edx, Buff
lsr ecx, 3
je bye

push ebx

;pravi mali skrembler a??
push edx
push ecx
lea ebx, [edx + ecx*4]
lsl ecx, 2
push ecx
invoke XorHalf, edx, ecx
pop ecx
invoke XorHalf, ebx, ecx
pop ecx
pop edx

dec ecx
@@: mov eax, [edx+ecx*4]
xor [ebx+ecx*4], eax
dec ecx
jns @B

pop ebx
bye:
ret
XorHalf ENP

Naravno ide brze bez PROC

6)
pseudo random number generator

Uzmi SEED (same starting point), generisi random key , XOR sifruje podatke, odnosno pri dekripciji koristis isti "seed" radi 'reget' originalnog 'key'

SEED je random_number varijabla


.data
random_number dd 15
.code

get_random_number:

push ebx
push eax

mov eax,[random_number]
mov ebx,31421
mul ebx
add eax,6927
mov [random_number],eax

pop eax
pop ebx
ret

7)
Sifruje:

void code(long* v, long* k) {
unsigned long y=v[0],z=v[1], sum=0, /*pa pocinjemo*/
delta=0x9e3779b9, n=32 ; /* k.s. konstanta */
while (n-->0) { /* pocetak ciklusa*/
sum += delta ;
y += (z<<4)+k[0] ^ z+sum ^ (z>>5)+k[1] ;
z += (y<<4)+k[2] ^ y+sum ^ (y>>5)+k[3] ; /* kraj ciklusa*/
}
v[0]=y ; v[1]=z ; }

Desifruje:

void decode(long* v,long* k) {
unsigned long n=32, sum, y=v[0], z=v[1],
delta=0x9e3779b9 ;
sum=delta<<5 ;
/* pocetak ciklusa*/
while (n-->0) {
z-= (y<<4)+k[2] ^ y+sum ^ (y>>5)+k[3] ;
y-= (z<<4)+k[0] ^ z+sum ^ (z>>5)+k[1] ;
sum-=delta ; }
/* kraj ciklusa*/
v[0]=y ; v[1]=z ; }








[Ovu poruku je menjao secret dana 07-26-2001 u 07:43 PM GMT]
 
Odgovor na temu

[es] :: Security :: Kriptografija i enkripcija :: Par "jednostavnih" algoritama...

[ Pregleda: 3964 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.