c# dll encryption

lock picture lock · Feb 23, 2011 · Viewed 13.1k times · Source

I need to encrypt my C# code used by by ASP.NET pages. So, when I compile to create an DLL file I do need to encrypt my DLL file. Please do help me how to encrypt DLL file...

Answer

Lunatic Experimentalist picture Lunatic Experimentalist · Feb 24, 2011

One thing you may be able to do is embed an encrypted .dll into another .dll that is to be decrypted and loaded at runtime.

  • First, compile a .dll with all the code you want to protect.
  • Second, encrypt the .dll in whatever manner you see fit.
  • Then, create a second .dll that will have the encrypted .dll embedded as a resource.
  • Have that second, outer, .dll ask for a key at runtime.
  • The outer .dll would then decrypt the encrypted .dll with the key.
  • The outer .dll can then call the System.AppDomain.CurrentDomain static method, and load the decrypted .dll using the Load method.
  • The outer .dll may then have to do some inter-op between ASP.NET and the decrypted .dll.

There are limitations to tis method. You will need to provide the instance a key each time at startup to get things running. There are ways to intercept this. Also, the decrypted .dll will exist in memory, decrypted, once the key has been provided. There are ways to read this.

This method is really only useful to protect code form someone that might steal a hard disk drive. This is not an absolute barrier to anyone in control of the machine that will be running the code.