Criptografia - Lío DES MAC4

 
Vista:

Lío DES MAC4

Publicado por Santiago (1 intervención) el 11/08/2004 11:28:59
Hola a todos, soy muy nuevo en esto de la criptografia. Veréis, hay un concepto que se me escapa, tengo que generar lo que la AEAT (agencia tributaria) llama un NRC, generando un código MAC-4 usando el algoritmo DES. He leído , y tengo , el algoritmo DES pero no se muy bien a qué se refieren con lo de generar un MAC-4 (según la norma ANSI X9.9), que no tengo. Sé que mis datos de partida son dos claves privadas más una referencia que es la que luego se autenticará en destino, mediante el NRC.

Alquien sabría explicarme qué es eso del MAC-4?. He visto que hay algunas librerías de Java para criptografía ¿incluyen las funciones de generación de estos códigos MAC)

¿alguien sabe algún sitio (y así no os doy mucho trabajo) donde venga un pelín explicadito lo del dichos MAC-4 según DES (ya se que está la norma X9.9 de ANSI) pero de momento me da gato comprarla , si a lo mejor, lo único que voy a necesitar es un capítulos de un tocho de dcomentación....


Gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Lío DES MAC4

Publicado por anonimo (1 intervención) el 18/09/2004 02:49:05
MAC (Message Authentication Code) viene a ser un mecanismo de autentificación sin secreto. En pocas palabras, suele consistir en usar un mecanismo de hashing sobre un mensaje, para generar una huella dactilar digital. Al parecer, en tu caso lo tienes que hacer con DES.

Veamos, el DES-MAC consiste en aplicar sucesivamente DES en modo CBC (cipher block chaining) con clave fija, y quedarte con el bloque final. Un ejemplo: tienes tu mensaje a MACear, dividido en bloques de 64 bits X[1], X[2], ... , X[n]. Tienes una clave determinada (especificada por tu protocolo) a la que llamaremos K. Para hallar el MAC del mensaje haces:

TEMP = 0x0
For Z = 1 to n
TEMP <-- TEMP xor X[Z]
TEMP <-- DES(TEMP, K)
End For

La salida de este algoritmo es el MAC-CBC del mensaje X.

También existe el MAC-CFB, pero aunque el X9.9 acepta su posible uso, suele ser desaconsejado (no presenta ventajas frente al CBC, y sí algunas desventajas).

Pero si quieres hacer caso a un consejo de amigo, no te metas a programar estas cosas SI NO SABES EXACTAMENTE LO QUE ESTAS HACIENDO. Si estás haciendo esta implementación para una empresa, mejor cómprate un buen libro, estúdialo a fondo, compara con otras implementaciones en la red, y entonces implementa tu método. No la cagues.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DES Visual Basic /Delphi Ayuda

Publicado por Alirio Yepes (1 intervención) el 25/01/2005 17:51:12
Amigos tengo un problema grande, bueno para mi es grande.

tengo un aplicacitivo en Visual basic el cual utiliza una libreria en donde esta la encripcion y desencripcion de el algortimo DES (windes32.dll), cual es mi problema esta aplicacion debo pasarla a Delphi 6-7 o Kylix. implemente el codigo de la libreria en delphi pero no hace nada no me desencripta, baje unos componentes para delphi que tienen DES, y lo implemente pero la cantidad de bytes que me devulve no es correcto,
entoces creo que la solucion es utilizar la Dll pero no me funciona el codigo en delphi, puede alguno echarme una manito.

Colocare el codigo de Visual basic y el codigo que coloque en delphi

declarar funciones en Visual BAsic
Private Declare Sub DESEncrypt Lib "WINDES32" Alias "DesEnCrypt" (ByVal lpKey$, ByVal lpInp$, ByVal lpOut$, ByVal wCnt&)
Private Declare Sub DESDecrypt Lib "WINDES32" (ByVal lpKey$, ByVal lpInp$, ByVal lpOut$, ByVal wCnt&)

Declaracion en Delphi

TFunc = function (lpKey,lpInp,lpOut:STRING;wCnt:Double):string ; stdCall;

Invocar la funcion en Delphi
Call DESEncrypt(lpKey, lpInp, lpOut, wCnt)

invocar la funcion en delphi
Handle := LoadLibrary ('windes32.dll');
if Handle <> 0 then
begin
@MiFunc := GetProcAddress (Handle, 'DesEnCrypt');
if @MiFunc <> nil then
begin
Edit2.Text:= MiFunc (gstLlave, lsDesc,rpta, 1)
end;
FreeLibrary (Handle);
end;


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar