I recently wrote an article, and this is its introduction:
The Caesar cipher encrypts by shifting the alphabet. The alphabet doesn't contain digits or symbols, so the cipher will only encrypt letters, leaving digits and symbols unchanged. This cipher was probably quite secure in ancient times, when illiteracy was more common.
Nowadays, it's just a toy cipher. And so, the purpose of this article is to demonstrate proficient usage of C++'s features in implementing the cipher as a computer program, rather than to promote the cipher itself.
I dislike it. The word "cipher" appears six times.
I would like it if someone could rephrase it to be more elegant, and shorter. Also, the illiteracy part is stupid and doesn't really show why the cipher is a poor choice nowadays.
"rotating" might be a better word than "shifting". Alphabet could be made to be anything so the second sentence is unneeded. I assume this cipher is somewhat secure if the adversary has no idea what cipher you're using and can't see many messages. Modern cryptography makes no such assumptions.
Some fine-tuning aside, this is probably how I would phrase it:
The Caesar cipher encrypts by shifting the alphabet, leaving digits and other symbols unchanged. It was used in ancient times to encrypt confidential messages, but from today's perspective it is just a toy cipher. So the purpose of this article is not to promote the Caesar cipher, but to demonstrate how to use C++'s features efficiently in its implementation.
I don't think it's really necessary to explain why it isn't secure - that should be obvious even to someone who knows nothing about cryptography.
Well newbies tend to not know much about security. But granted a newbie won't be implementing anything in a production environment, and by the time they would be they would know to use a good encryption algorithm.
I think the introduction is mostly fine. I'm not crazy about the rest of the article (for the lazy amongst us: http://cplusplus.com/articles/9hvU7k9E/ ). The code at least. It's odd to copy the alphabet and rotate it in memory or to do find on an alphabet that matches ASCII subset (without providing any way to give another alphabet or use unicode), but I'm bugged the most by the combination of std::transform and a lambda which is possibly less concise than a for loop.
It's silly. You might as well add a license to every post you make. I guess I could understand if it was a large project, but you have 20-30 significant lines. Note the license says "copies or substantial portions of the Software". So I guess it doesn't really protect anything...
@ fun2code: ask the administrator. ("twicker", "admin"?)
As far as I'm concerned, everybody votes whatever they want, and I couldn't care less. I started two threads in which actual discussions can take place, about my article. Then there are the PM's. Stars are meaningless.