Storing Credit Card Information for later use I'm building a website where registered users would place future order(s). e.g. after 6 months for $20, or even on a specified date may be after one year or so.

In order to charge them on those transaction dates through paypal or any other payment gateway, we would need their credit card information to store somewhere.

What is the best way to complete the task with maximum security.

Please advice.

Edit: Currently I'm using Ubercart, but if any other module can fit for the required scenario, I'm open for that.

These would not be recurring payments, but I would rather call them "post-dated orders". I've never used any payment methods. This is my first site for shopping cart so I've no idea. If paypal can store the CC info for multiple transactions for every site member and give me option to execute the orders on specific dates, I hope that would be fine with me too.
The most secure place to store credit card numbers will be on a third party service designed to securely retain that data. These service providers are PCI Level 1 compliant with code and systems in place to prevent the unwanted or unexpected exposure of sensitive card data.

Many payment gateways support such "card on file" functionality, where they allow you to process an authorization or capture for a credit card and provide you with a token to perform follow-up transactions using that same card data. Such a transaction is generally referred to as a "reference transaction", with example implementations being PayPal's reference transactions, Authorize.Net's Customer Information Manager (CIM), or CyberSource's Managed Billing / subscriptions.

The name and price of these services will vary from payment gateway to payment gateway, but they will always require a similar point of integration in Drupal - a way to retain a payment token and process that reference transaction at a later date; typically you want some sort of customer interface as well, allowing customers to update their information or reuse a credit card on a later order.

To solve the Drupal integration, we created the Commerce Card on File module, which does all this and more within Drupal Commerce. It works through payment method callbacks, allowing any payment method module to implement the callbacks to integrate reference transactions through its payment gateway's API. Obviously, not every payment gateway under the sun is supported, so be sure to check the documentation to find out if yours is supported.

And as the comments on your original question indicate - you should never be in the business of storing card data in your site, which was unfortunately easy to do in Ubercart. Multiple times now I've been part of rescuing sites that incorrectly used the UC Recurring module to retain credit card data in plaintext in the database for later processing. Do not do this - ever.