Anant K Agarwal wrote: So as per your suggestion I will go with Bouncy Castle as a JCE default provider
I don't think I have suggested Bouncy Castle as the JCE default! If you are going to allow only the standard algorithms then just stick with the SunJCE provider !
for our product and if users don't want to use that they can provide their own implementation of what-so-ever algorithm they wish to use.
Not a trivial task to create a provider. You might do better to create a provider of your own that has the ability in install plugins.
So I am new to cryptography, where would I find industry level standard algorithm that are currently being used.
You will have to research this yourself.
Just to add, our users need not install any software. Since our's is a Web application and we will be controlling the encryption and decryption process.
Ouch ! Think about key security before going any further! You need to be able to deny that you have access to the keys so that any breach of security cannot be attributed to your software. If you keep the keys on your system then no matter how you protect the keys on your system they have to be in the clear to be used on your system. If the user keeps the keys then he has to pass them to your system before they can be used and once again they have to be in the clear to be used.
You can get round this problem by using a tamper proof HSM where your customer's keys are passed to the HSM encrypted using the HSM's public key. But using an HSM you will have trouble adding a user's own algorithms ! Since you are creating a Web application you will need a bank of HSM modules and these ain't cheap!
Edit : The more I think about this project the less I like it. Even without the key security problem you have a
BIG security problem in that the cleartext must exist in your server both before encryption and after decryption.