Título: Codigo en C# Criptografia por favor ayuda Publicado por: festina73 en 28 Octubre 2019, 21:29 pm Hola alguien sabe
que significa y que hace este codigo ZeroMemory(gch.AddrOfPinnedObject(), sSecretKey.Length * 2); gch.Free(); gracias Título: Re: Codigo en C# Criptografia por favor ayuda Publicado por: ThunderCls en 28 Octubre 2019, 22:26 pm Hola alguien sabe que significa y que hace este codigo ZeroMemory(gch.AddrOfPinnedObject(), sSecretKey.Length * 2); gch.Free(); ZeroMemory https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa366920(v%3Dvs.85) GCHandle.AddrOfPinnedObject https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.gchandle.addrofpinnedobject?view=netframework-4.8 GCHandle.Free https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.gchandle.free?view=netframework-4.8 Creo que se explica a si mismo, solo hay que usar el buscador un poco Título: Re: Codigo en C# Criptografia por favor ayuda Publicado por: kub0x en 28 Octubre 2019, 22:28 pm Bueno tu pregunta poco tiene que ver con criptografía, estás dando un código que forma parte de alguna implementación criptográfica.
En este caso, las dos líneas son pertenecientes a la API de windows y son normalmente llamadas desde procesos nativos codificados por ejemplo en C++. Por lo tanto al estar tu en C# tienes que hacer uso de Marshalling o P/Invoke para llamar código unmanaged desde managed. Zeromemory es una función que setea la porción de memoria que tu le dices a 0. En este caso gch.AddressOfPinnedObject() es el puntero de memoria a gch, y sSecretKey.Length * 2 es el número de 0 que va a setear desde el inicio del puntero de gch. Después gch.Free() es el equivalente a llamar desde C++ a Free(gch); por lo tanto lo que hace es desreferenciar el puntero gch para que el heap lo libere, ten en cuenta que esto hace que gch no contenga nada útil porque pudo haber sido sobreescrito al ser liberado en heap. Si te suena a chino vas a tener que estudiar mucho :D Saludos. |