Encrypts the string along with salt, Decrypts the string and removes the salt : Encryption « Security « Java






Encrypts the string along with salt, Decrypts the string and removes the salt

     
/*
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.    
 */

//package org.opentides.util;

import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;


import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class StringUtil {

  private static Random random = new Random((new Date()).getTime());
    /**
     * Encrypts the string along with salt 
     * @param userId
     * @return
     * @throws Exception
     */
  public static String encrypt(String userId) {  
    BASE64Encoder encoder = new BASE64Encoder();

    // let's create some dummy salt
    byte[] salt = new byte[8];
    random.nextBytes(salt);
    return encoder.encode(salt)+
      encoder.encode(userId.getBytes());
  }

      
  /**
   * Decrypts the string and removes the salt
   * @param encryptKey
   * @return
   * @throws Exception
   */
  public static String decrypt(String encryptKey) {
    // let's ignore the salt
    if (encryptKey.length() > 12) {
      String cipher = encryptKey.substring(12);
      BASE64Decoder decoder = new BASE64Decoder();
      try {
        return new String(decoder.decodeBuffer(cipher));
      } catch (IOException e) {
      //  throw new InvalidImplementationException(
        //    "Failed to perform decryption for key ["+encryptKey+"]",e);
      }
    }         
      return null;
  }

}

   
    
    
    
    
  








Related examples in the same category

1.Basic symmetric encryption example
2.Encryption and decryption with AES/ECB/PKCS7Padding
3.Cipher with AESECBPKCS7Padding BC
4.Basic symmetric encryption example with CTR using DES
5.Basic symmetric encryption example with padding and CBC using DES
6.Basic symmetric encryption example with padding and ECB using DES
7.CBC using DES with an IV based on a nonce: a hypothetical message number
8.Example of using PBE with a PBEParameterSpec
9.Get Cipher Instance Blowfish
10.Message without tampering with MAC (DES), encryption AES in CTR mode
11.Example of using PBE without using a PBEParameterSpec
12.Getting the Bytes of a Generated Symmetric Key
13.Encryption and Decryption using Symmetric Keys
14.Encrypt a password
15.Cryptography Streams: True Mirror
16.Get the formats of the encoded bytes
17.Create an encrypted string for password
18.Cryptography Streams: URLDigest
19.Easy Blowfish encryption
20.This program tests the AES cipher
21.This program tests the RSA cipher
22.Crypt demo
23.Encrypt User name
24.Crypt Utils
25.Encode a string using algorithm specified in web.xml and return the resulting encrypted password.