The Wolfram blog post: Using Mathematica Enterprise Edition to Create Professional Apps, Tools, and Reports makes the following statement (emphasis mine):
Enterprise Edition allows you to create EnterpriseCDF files, which provide enhanced capabilities that can be deployed via the free Wolfram CDF Player. But what are these capabilities, and why are they important to the work that you do? Let’s take a look.
First, Enterprise Edition allows you to encrypt your code, so recipients cannot see your proprietary algorithms. For consultants and application developers, this was an absolute must. With Enterprise Edition, you can deliver reports, updates, and full solutions to your potential customers without revealing your intellectual property.
Note that this statement says "encrypt" not "encode". A great deal hinges on this distinction.
In a comment to Albert Retey's answer to this question: What can webmathematica do that CDF cannot do?, Andreas Lauschke states:
With the CDF, the M code is included in the distribution. WRI shows you ways to "encode" that, but it's a joke, you can hack that with 5 lines of code.
Others on this site have expressed similar concerns.
With these concerns in mind and knowing that promotion and marketing doesn't always represent things as accurately as one would like, a colleague contacted Wolfram to ask whether Enterprise Edition really could encrypt code or if it only relied on something akin to encoding of packages?
Neither Premier Support or sales could supply a direct and immediate answer. I think anyone reading this who has an interest in deploying Mathematica applications that need to include proprietary code, would share the unsettling feeling this left us.
Now, we appreciate that this may represent new functionality and that support and sales people need to get up to speed on such things. So we hope they clarify this. If we hear back from Wolfram, we'll share the information.
But for now, it leaves the question...
Can Enterprise Edition really encrypt code for distribution via CDF?
If it does support real encryption, knowing a bit about what type of encryption would also provide some comfort.
I recognize this falls a bit out of the normal range of questions, but I think it concerns many of us in this community and raises some other questions about using Mathematica and what one can and cannot reasonably do with it.
Encodedoes need to be undone before the code is run--it is more than just obfuscation. This occurs internally to Mathematica when youGetthe encoded file. Actually, I think thatEncodereally should be considered as a form of encryption, especially when a non-default key is used. – Oleksandr R. Mar 19 '13 at 12:12Encodewith a specified key absolutely is encryption since knowledge of the key is needed to decode the message (the encoded content does depend on the key, so it is not merely a check to see if the key is correct--I did check this, of course). Not specifying a key (or using a default key, if you prefer) is arguably equivalent to simple encoding, not encryption. But it is not merely obfuscation; it is actually a code. – Oleksandr R. Mar 19 '13 at 17:26Encodeand that it is not secure? (Here I am concerned about the algorithm, not the implementation--I know full well that the implementation isn't secure.) If the latter it would have been helpful for you to state this earlier rather than making cryptic references to "5 lines of code" &c. And by "decode" of course I do not mean the usual stupid tricks withLocked. – Oleksandr R. Mar 19 '13 at 17:55Encryptfrom V10.1 an encryption? – Kuba Apr 09 '15 at 13:50