Follow @RoyOsherove on Twitter

Case Study: CryptoLicensing + CryptoObfuscator in the real world

I’ve reviewed CryptoLicensing last year, and in the past few months, I’ve had the chance of implementing both CryptoLicensing and CryptoObfuscator for .NET in a real commercial project. the developer had given us free licenses to do a case study with it, and the results are very positive so far:


Crypto Licensing:

  • EASY. Creating a licensing solution, including a key generation solution for CRM backend, checking for supported features and amount of runs for the program, and other very common tasks was extremely easy. it takes less than 10 minutes to integrate rudimentary licensing into a new application when you’ve done it before. If you’ve never done it it take about 30 minutes.
  • SIMPLE. The code being using with the licensing is pretty simple and readable, and the object model is easy to work with. It has some interesting APIs that might confuse at first (differentiation between license keys and serials was a problem for me) but the documentation has been fixed to make things a bit more understandable.
  • SUPPORT. the UI for the generator built in is not very intuitive. But it was MUCH less intuitive when I started working with it. During the past few months it has changes in many ways to alleviate various usability problems I’ve noticed in it, in many ways due to the quick response from the developer.
  • Nice feature set. The licensing solution supports most very common cases in a very easy manner, and I pretty much could do whatever I wanted, except for one thing which I really missed – the ability to prevent multiple instances of the same application with same key in the local network (like resharper’s behavior). I’m told this is coming, but it could have come sooner. Other than that it supports activation remotely, trisal licensing, counting of runs, total time used, net time used, time since install and many other more advanced features. Pretty cool for such a small footprint.

Crypto Obfuscator:

  • RELATIVELY EASY. It was quite easy to get it to work with one assembly, but once we got into multiple assemblies with dependencies we’ve hit some bugs. Those were fixed very quickly and it seems to work great with a very diver solution of dependent projects.
  • SIMPLE: making it work as part of the build was very simple indeed. changing an option on it is also simple. the way everything should be in software.
  • SUPPORT: just as good (same developer). I had various usability problems with it that were fixed quickly.
  • Nice feature set: it has everything I needed (including ability to prevent Reflector from seeing various bits of source code).


I’m really happy I chose these tools. They have, still, some usability issues. but they work great, and they saved us some real time when we needed to focus on actual business value instead of dealing with crap like this. That’s about as positive as it gets in component world – get a component so it can get out of your way when you develop the really important stuff. As a result we’re now looking into using Crypto licensing for MFC for our Isolator for C++ product line. I’ll let you know how that goes!

Case Study: SmartInspect in the real world

Notes from a TDD masterclass