30

You can do that quite easy. If you have a plaintext text, secret key S and public key P you do S(text) and get the cipher. Now you can publish cipher and P but not S. Therefore, everyone can decrypt the cipher with P by doing P(cipher). If you now want to prove, that you are the one who created the cipher (and therefore the original text), you can either ...


21

It's possible to hash the data you wish to timestamp and turn it into a Bitcoin address. This is known as trusted timestamping. By making a small payment (a satoshi, or 0.00000001 BTC) to it, the payment is stored on the blockchain along with the address you paid to. Since only the hash is stored on the Bitcoin blockchain, no one can tell what data you ...


20

Since "Trim Whitespace on save" is a feature of many IDEs, I don't think that this is good for anything.


18

First off, if someone rips off an open source project, presumably to create a closed source project, you are presumably not going to have access to the source of the closed source project without a lawsuit and enough evidence to get a court order to be able to examine the source code. That would tend to be a relatively high bar to clear before you can even ...


5

"Open source" typically includes that you provide the source code of your program in an understandable, compilable and changeable form. So any kind of artificial licence check could be easily disabled by anyone who is able to compile your code and has a basic knowledge of programming . Of course, you could use a license which forbids to change anything in ...


5

The copyright line doesn't refer to the code, but to the license itself. The time span does not determine until when the copyright is active, but during which time span the copyrighted subject was created and/or modified. This is not relevant here. You are not free to use the code in any way you like: You have to adhere to the license which you linked to: “...


4

For purposes of discussion, I am assuming that your program is written in C, compiled on unix, and that there is a small amount of customization done (only changing compile time constants). We start with a template, lets call it customer.c.templ #include "customer.h" const char custname="$$custname$$"; const int custnum=$$custnum$$; . . . and we write a ...


4

When a company is buying your software, you will have a contract that states what you deliver and what they can do. Chances are that what you are planning will cause them to not sign a contract in the first place. They don't get what they want, and they have to work with someone who might come up with other interesting ideas in the future. I would run. ...


3

That's most likely not going to work. Even if you provide them with byte code only, it's usually possible to simply deassemble the code. You'll lose comments, formatting and possibly variable names that way though. Code obfuscation might be an option, but at the same time you're not really hiding anything (which in the end is impossible, even if someone has ...


3

You are solving the wrong problem. You can't hide your code when using php and javascript. You can obfuscate but it will not deter anyone trying to steal your code. What you need is a contract where it is clearly written what your code does, what the customer is allowed to do with your code and penalties for breaking the contract by distributing your code ...


3

Actually, I am in a very similar position, managing the development of a product with a likewise license model, and a core database shared by different functions in our software. What if a part of the data model is related to an optional part? Do I build up these data structures in my application so the rest of my application can just assume they're ...


3

This is a very general question, and the answer will differ depending on the application interface you're using. Generally: Content is encrypted. You need a "key" to unlock it. The "key" is attained by synchronizing the local profile with a master server. Typical authentication methods are used to login to the master server. All communication to the ...


3

You have two options:- Learn to trust your clients. re-Factor your software in a compiled language (Java, C# will do but they can be reverse engineered with comparative ease, C,C++ are pretty much impossible to reverse engineer but are not very good for WEB applications). You should also realize that any reasonably competent programmer could probably ...


3

If you need to protect some magnificent algorithm you could have the code sitting on your own server with an authenticated API to access it, then distribute programs that use that API and sell credentials to use that API. It would then be possible to control code access as you pleased. This would be a sort of a software as a service type system that can be ...


3

Any software needed would preferably be open-source. To the best of my knowledge, you're out of luck on this one. Making PHP 'encryption' is a business, and open sources solutions just won't/don't cut it as well (from the ones I found, it took me under 10 minutes to defeat them because all they really did was base64_encode the code, rotate it a few times, ...


2

I don't believe it'll be of any good, if the platform/language uses an formatting system (like those formatters found in the Delphi/FreePascal ecosystem, the pretty-print feature of VB.NET, the C# formatter on VS, etc)... So if the code had passed by those tools, and considering that the tool is on its default settings, all watermarking is gone. Some ...


2

It could also be an indication of using the same crummy editor that doesn't clean up line endings. I found a few thousand lines of un-commented assembly code in a project I was working on over a decade ago. I wondered at the time if that meant it was plagiarized code with the comments stripped out. Ultimately, this is a legal question and the best answer ...


2

One thing that would be possible, as you mentioned it is having an interface with dual implementation, and using a DI container to conditionally inject the proper component if it is available. Simple and effective. You won't really need to add checks everywhere as this confines module management to a single place. This is obviously assuming that your system ...


2

As with all legal questions - you really should ask a lawyer. But a short answer: the date in the copyright is when changes were made by that author, not any indication of copyright expiry. The original author worked on the code between 1998 and 2002 - those changes are still under copyright, and will be for a some while longer.


2

Copyright generally does not expire until 50 or 70 years after the death of the person who wrote it. Therefore, you must still license your own project under the GPL v2.


2

In the age of the Internet, copy protection is a fool's errand, and it's never worth your time and effort to even try. Consider Microsoft, who spends more resources on R&D in a single month than you'll ever have in your entire life put together. They're obsessive about copy protection, and yet the latest version of Windows had a crack available before ...


2

You probably want to encrypt the content (or at least obfuscate it). You then have to trust the encryption and the procedures related to it. But advanced users could bypass your Java code and access to the encrypted form. BTW, with enough efforts (including forcing the encryption), your mechanism could be bypassed. Remember that security through obscurity ...


1

Will it help you identify the culprit in a way that holds up in court? It will depend on jurisdiction, but there are a few complications. The culprit is not likely to have used his own name in the registration, so what you have to go by is an IP-address and perhaps an email-address. Often that will only get you which local mall the culprit used the wifi ...


1

It depends how much effort you think someone is likely to put into cracking; no system is hacker proof. A simple check relying on a function that returns success or failure is easy to patch. If two downloads will only vary in predictable ways then it's relatively simple to mask the original fingerprint. You need to balance the loss due to piracy against ...


1

I probably missed something regarding this case? I think the bit you are missing is a trusted entity. When you hash the file with the content you want to certify, you can show to the world that you are the owner of this document, without disclosing this document. This is all very well, but how can you prove you had this document at some specific time in ...


1

A very simple way to establish that you are the first one to publish something, without revealing who you are immediately but having the option to do this later: Publish it on a well known public source (there everyone can see that you published it) In this publication, add a line: Originally published on dd/mm/yyyy by the owner of xxx@gmail.com No need to ...


1

You might limit the number of downloads allowed per purchased item to prevent the scenario you describe. This won't prevent piracy, of course, but it will prevent people from copying the game in large numbers by sharing accounts. You might set a limit of 5 or 10 downloads (only count finished downloads), and then require they contact tech support if for ...


Only top voted, non community-wiki answers of a minimum length are eligible