A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Laboratórios

DRT-240 BITS

Seg

19

Abr

2004


02:00

(4 votos, média 4.00 de 5) 


CIFRAGEM PASSO A PASSO

O Criptossistema DRT codifica o texto claro em blocos de 64 bits. Este bloco é dividido em 4 partes iguais (Words) de 16 bits. Estas 4 partes são representadas por A, B, C e D, respectivamente. Os Valores A, B, C e D são números de 16 bits, ou seja, números compreendidos entre 0 e 65535.

Vamos considerar que o texto claro seja representado por 8 bytes nulos, ou seja, com valor 0. Assim os valores A, B, C e D são iguais a zero.

Primeira Rodada

Soma e Subtração:

	A = (A + CHAVE[1]) MOD 65536
	B = (B - CHAVE[2] + 65536) MOD 65536
	C = (C - CHAVE[3] + 65536) MOD 65536
	D = (D + CHAVE[4]) MOD 65536

	Considerando os valores correntes teremos:

	A = (0 + 40443) MOD 65536 = 40443
	B = (B – 7862 + 65536) MOD 65536 = 57674
	C = (C – 35747 + 65536) MOD 65536 = 29789
	D = (D + 57512) MOD 65536 = 57512

Inversão:

	X1 = A DIV 256
	X2 = C MOD 256
	X3 = A MOD 256
	X4 = C DIV 256
	A = (X2 * 256) + X1
	C = (X3 * 256) + X4

	X1 = (40443 DIV 256) = 157
	X2 = (29789 MOD 256) = 93
	X3 = (40443 MOD 256) = 251
	X4 = (29789 DIV 256) = 116
	A = (93 * 256) + 57 = 23965
	C = (251 * 256) + 116 = 64372

	X1 = B DIV 256
	X2 = D MOD 256
	X3 = B MOD 256
	X4 = D DIV 256
	B = (X2 * 256) + X1
	D = (X3 * 256) + X4

	X1 = (57674 DIV 256) = 225
	X2 = (57512 MOD 256) = 168
	X3 = (57674 MOD 256) = 74
	X4 = (57512 DIV 256) = 224
	B = (168 * 256) +  225 = 43223
	D = (74 * 256) + 224 = 19168

	Neste ponto teremos os valores

	A = 23965
	B = 43233
	C = 64372
	D = 19168

Difusão:

	ACL = C XOR 27809
	ACL = (ACL + (D * CHAVE[5])) MOD 65536
	A = A XOR ACL
	B = (B + A) MOD 65536

	ACL  = (64372 XOR 27809) = 38869
	ACL = (38869 + (19168 * 12596)) MOD 65536
	ACL = 44373
	A = 23965 XOR 44373 = 61640
	B = (43233 + 61640) MOD 65536 = 39337

	ACL = (A * CHAVE[6])
	ACL = (ACL + (B XOR 30561)) MOD 65536
	C = ((C + ACL) MOD 65536) XOR B

	ACL = (61640 * 28188) = 1737508320
	ACL = (1737508320 + (39337 XOR 30561)) MOD 65536 = 13480
	C = ((64372 + 13480) MOD 65536) XOR 39337 = 43445

	ACL = (C DIV 256) + ((B MOD 256) * 256)
	ACL = ACL XOR A
	D = ((D XOR B) + ACL) MOD 65536

	ACL = (43445 DIV 256) + ((39337 MOD 256) * 256) = 43433
	ACL = 43433 XOR 61640 = 22881
	D = ((19168 XOR 39337) + 22881) MOD 65536 = 11434

	Neste ponto temos os valores:

	A = 61640
	B = 39337
	C = 43445
	D = 11434

Rotação:

	ACL = A
	A = B
	B = C
	C = D
	D = ACL

	ACL = 61640
	A = 39337
	B = 43445
	C = 11434
	D = 61640

	Valores finais no final da 1ª rodada:

	A = 39337
	B = 43445
	C = 11434
	D = 61640

Assim vemos acima os valores finais para a 1ª rodada da cifragem. As outras 7 rodadas têm o processo de cifragem idêntico e, por isso, vou condensar os dados destas 7 rodadas na tabela a seguir:

	RODADA	Soma & Subtração	Inversão		Difusão			Rotação

	2	A = 29500		A = 27251		A = 56413		A = 23253
		B = 30954		B = 32376		B = 23253		B = 62006
		C = 32106		C = 15485		C = 62006		C = 47626
		D = 36478		D = 60046		D = 47626		D = 56413

	3	A = 38894		A = 30615		A = 13053		A = 30218
		B =  3346		B = 17165		B = 30218		B = 52033
		C = 15223		C = 60987		C = 52033		C = 40194
		D = 50755		D =  4806		D = 40194		D = 13053

	4	A = 12105		A = 41263		A = 53860		A =  2732
		B = 18549		B = 14408		B =  2732		B = 56111
		C = 60065		C = 18922		C = 56111		C = 65211
		D = 20536		D = 30032		D = 65211		D = 53860

	5	A = 45813		A = 44466		A =  8025		A = 48815
		B = 22054		B = 40790		B = 48815		B = 39829
		C = 24749		C = 62816		C = 39829		C = 18683
		D = 38559		D = 9878		D = 18683		D =  8025

	6	A = 12795		A = 50993		A = 14085		A =  1035
		B =  1768		B = 52486		B =  1035		B = 28538
		C = 52423		C = 64460		C = 28538		C = 10518
		D = 42957		D = 59559		D = 10518		D = 14085

	7	A = 12361		A =  7984		A = 37815		A = 56835
		B = 19685		B = 19020		B = 56835		B = 31582
		C = 43039		C = 18856		C = 31582		C = 52193
		D =  5706		D = 58646		D = 52193		D = 37815

	8	A = 54708		A = 28373		A = 45639		A = 37778
		B = 19446		B = 57675		B = 37778		B =  8351
		C = 60526		C = 46316		C =  8351		C = 34358
		D = 24033		D = 63069		D = 34358		D = 45639

	INTERAÇÃO FINAL
		A = 19057
		B = 11640
		C = 33583
		D = 60240

Esta tabela resume toda a cifragem de um bloco de 64 bits no algoritmo DRT. Na entrada temos:

	A = 0
	B = 0
	C = 0
	D = 0

	A Chave de cifragem é (em Hexadecimal, 240 bits):

	000000000000000000000000000000000000000000000000000000000000

	O Criptograma correspondente é:

	A = 19057
	B = 11640
	C = 33583
	D = 60240

Em seguida vejamos um exemplo da decifragem utilizando o algoritmo DRT.

Informações adicionais