• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Liutauras Vilda
  • Tim Cooke
  • Jeanne Boyarsky
  • Paul Clapham
  • Devaka Cooray
  • Ron McLeod
  • paul wheaton
Saloon Keepers:
  • Tim Moores
  • Piet Souris
  • Tim Holloway
  • Stephan van Hulst
  • Carey Brown
  • Al Hobbs
  • Frits Walraven
  • Scott Selikoff

Encryption Decryption issue with DES3

Ranch Hand
Posts: 60
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Dear All,

I am facing a problem while encryption and decryption of password using DES3 algorithm.I do hava a java file BOSEncryption_Citi.java. This file has got methods encryptString and decrypt.I call these methods from

1. separate java file Test.java
2. a servlet

Encryption - Decryption happens correctly while using Test.java but when I use the servlet it gives me an exception IllegalBlockSizeException in the decrypt method.

My code is as follows:

Plz let me know what's wrong with the code:I know tht the code seems to be huge but plz bear.

package security;

import javax.crypto.*;
import javax.crypto.spec.*;

import sun.misc.BASE64Decoder;

import java.security.*;
import java.security.spec.*;

//import log.DebugLog;

* @author 160775
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
public class BOSEncryption_Citi {

static javax.crypto.Cipher ecipher;
static javax.crypto.Cipher dcipher;

private static final String ENCRYPTION_KEY = "AB1DEFGTYIOP123456789981";

BOSEncryption_Citi(String passPhrase) {
try {
// Create the key
byte [] key1 = passPhrase.getBytes();
KeySpec keySpec = new DESedeKeySpec(key1);
SecretKey key = SecretKeyFactory.getInstance("DESede").generateSecret(keySpec);
ecipher = javax.crypto.Cipher.getInstance("DESede");
dcipher = javax.crypto.Cipher.getInstance(key.getAlgorithm());
} catch (java.security.spec.InvalidKeySpecException ikse) {
// DebugLog.l("BOSEncryption_Citi::constructor::InvalidKeySpecException"+ikse.toString());
} catch (javax.crypto.NoSuchPaddingException nspe) {
// DebugLog.l("BOSEncryption_Citi::constructor::NoSuchPaddingException"+nspe.toString());
} catch (java.security.NoSuchAlgorithmException nsae) {
// DebugLog.l("BOSEncryption_Citi::constructor::NoSuchAlgorithmException"+nsae.toString());
} catch (java.security.InvalidKeyException ike) {
// DebugLog.l("BOSEncryption_Citi::constructor::InvalidKeyException"+ike.toString());
}catch(Exception e){


public static String encryptString(String str) {
try {
// DebugLog.l("BOSEncryption_Citi::from encryptString");
BOSEncryption_Citi encrypter = new BOSEncryption_Citi(ENCRYPTION_KEY);
byte[] utf8 = str.getBytes("UTF8");
byte[] enc = ecipher.doFinal(utf8);
javax.crypto.Cipher ecipher= null;
javax.crypto.Cipher dcipher= null;
return new sun.misc.BASE64Encoder().encode(enc);
} catch (javax.crypto.BadPaddingException bpe) {
// DebugLog.l("BOSEncryption_Citi::encryptString::BadPaddingException"+bpe.toString());
}// catch (IllegalBlockSizeException ibse) {
catch (java.io.IOException ioe) {
// DebugLog.l("BOSEncryption_Citi::encryptString::IOException"+ioe.toString());
} catch (Exception e) {
// DebugLog.l("BOSEncryption_Citi::encryptString::Exception"+e.toString());
return null;

public static String decrypt(String str) {
try {
// DebugLog.l("BOSEncryption_Citi: ecrypt::s");
BOSEncryption_Citi encrypter = new BOSEncryption_Citi(ENCRYPTION_KEY);

byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);
byte[] utf8 = dcipher.doFinal(dec);
javax.crypto.Cipher ecipher= null;
javax.crypto.Cipher dcipher= null;
return new String(utf8, "UTF8");
} catch (javax.crypto.BadPaddingException bpe) {
//DebugLog.l("BOSEncryption_Citi: ecrypt::BadPaddingException"+bpe.toString());
} //catch (IllegalBlockSizeException ibse1) {
//DebugLog.l("BOSEncryption_Citi: ecrypt::IllegalBlockSizeException"+ibse.toString());
catch (java.io.IOException ioe) {
//DebugLog.l("BOSEncryption_Citi: ecrypt::IOException"+ioe.toString());
}catch (Exception e) {
//DebugLog.l("BOSEncryption_Citi: ecrypt::Exception"+e.toString());
return null;


* Created on Apr 7, 2006
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates

package security;

import EncryptTest.BOSEncryption_Citi;

* @author 160775
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates

public final class Test {

public static void main(String args[])
String encryptedPassword1 = BOSEncryption_Citi.encryptString("jdbc racle:thin:@");
String encryptedPassword2 = BOSEncryption_Citi.encryptString("cbosowner");
String encryptedPassword3 = BOSEncryption_Citi.encryptString("cbos123");

String decryptedPassword1 = BOSEncryption_Citi.decrypt(encryptedPassword1);
String decryptedPassword2 = BOSEncryption_Citi.decrypt(encryptedPassword2);
String decryptedPassword3 = BOSEncryption_Citi.decrypt(encryptedPassword3);



import config.Config;
import dbconnector.ConnectionPool;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.SQLException;
//import com.javaexchange.dbConnectionBroker.*;
import masterdata.MasterData;
//import client.bos.properties.BOSProperties;
//import log.*;
//import java.net.URLEncoder;
import dbconnector.DbConnector;
import security.BOSEncryption;
import security.BOSEncryption_Citi;

public class WebStartUpServlet_Citi extends HttpServlet

//private DbConnectionBroker connectionPool ;
//private ServletContext context ;

public void init(ServletConfig config) throws ServletException
//log("init of WebStartUpServlet");
// DebugLog dlog = new DebugLog("WebStartUpServlet.txt");


/*********************Code Added by Nikhil on Apr 07,2006 for loading LoginPwd_Citi properties file.
LoginPwd_Citi properties file is generated using DES3 Encryption Algorithm***********************/
ResourceBundle bundle = PropertyResourceBundle.getBundle("LoginPwd_Citi");
//bundle = PropertyResourceBundle.getBundle("LoginPwd_Citi");

String conURL_Citi = (String)bundle.getObject("dburl");
String login_Citi = (String)bundle.getObject("login");
String pwd_Citi = (String)bundle.getObject("pwd");

String conURL_Citi_decrypt="";
String login_Citi_decrypt="";
String pwd_Citi_decrypt="";


log("Calling BOSEncryption_Citi.decrypt functiion");


log("Decrypted: wd_Citi::"+pwd_Citi_decrypt);

log("after reading from citi file ");
log("WebStartUpServlet::Connection Pool Created");
DbConnector dbCon=new DbConnector();

MasterData mastData = new MasterData();
log("Object Created for MasterData");
// DebugLog.l("Object Created for MasterData");

log("getExchSecurityNameHash succesfully called");
log("Fetching Of data Succesful");
// DebugLog.l("Fetching Of data Succesful");
catch(MissingResourceException mre)
log("In WebStartUpServlet:: init \"PrecWebProperties.properties\" or \"LoginPwd.properties\" not found " );
/*catch(IllegalBlockSizeException ibse)
log("IllegalBlockSizeException occured"+ ibse.toString());
catch (Exception e)
log("Problem in initializing WebStartUpServlet"+e.getMessage());


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException//, IOException
//log("WebStartUpServlet: oPost and calling doGet");

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException//,IOException
//log("WebStartUpServlet: oGet and calling doGet");

public void destroy()
//log("WebStartUpServlet: estroy");

Posts: 43028
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Nikhil, when posting code of any length, please use CODE tags around them - they keep the code formatted and readable. It's next to impossible to make sense of the code displayed as it is. During posting, simply select the code in the input field, and click the CODE button.
Tick check! Okay, I guess that was just an itch. Oh wait! Just a tiny ad:
the value of filler advertising in 2021
    Bookmark Topic Watch Topic
  • New Topic