How to choose an algorithm I have some understanding of Cryptography and I would like to know if there is a tool or website to help me choose an algorithm based on my own needs (I'm being vague in purpose).

I'm looking for a website or tool that shows properties of algorithms like:


What is it best for
What is it not very good for
How can it be used poorly
What kind of algorithm is it? (hash, encryption, etc)
Is it reversible?
Is it symmetric or asymmetric?
Does it have known vulnerabilities?
How strong is it against brute force?
How proven is it in the industry?
When was it invented?
Is it fast to run? To decrypt (as appropriate)?
How common are implementations of it in various languages?
What programming languages have implementations currently?


I specifically want information to help me choose the appropriate algorithm based on my needs, not just encyclopedic information about algorithms. And for vulnerabilities, a resource that is maintained and updated would also be invaluable.

Perhaps all this information does not reside in one place, but I'm not really sure where to even start (other than just googling 'how to choose an encryption algorithm' and etc) to research this information.



Edit: Adding some links to articles


Wikipedia category: Cryptographic algorithms
Wikipeida: List of algorithms, Cryptography
There is no out of the box tester which can tell you what you need, you need to do research. I'm having the same 'problem'. I'm doing an internship for a company which wants to protect their self-created protocol which works on top of TCP.

So to tackle this I've create a plan of approach and defined my research parameters (quite broadly). Now i'm looking into the history of several algorithms (RC6, AES, Twofish) and looking which is best applicable to my situation.

Since i have hardware restrictions (it's for embedded use and some embedded divces they use are OLD) so I'm currently looking into libraries such as PolarSSL to find C implementations of cryptographic algorithms to test on the embedded devices i have.

When i test them i'll test for speed, code space and other things.

So in short, what you need all depends on what you need, maybe TDES even though it's old and almost insecure is what you need. but you need to do your own research.

As far as good implementations are concerned, open source libraries is the way to go. They are used world wide and it is safe to say well known open source libraries have been tested to an extend no stack overflow solution has (given the solution isn't a direct copy of an open source library :P )

But for all your questions these websites are for your best research:


NIST publications,  proven secure algorithms (no implementations
but lots of background) 
Wikipedia, General background and    specifications
PolarSSL Source code in C
For implementations in for example c# the .net library has everything you could possible need.


So final note do not create your own implementation! use the libraries but that's a disclaimer everyone should know by now :P