Javax.crypto reference in NW Dev Studio
Has anyone encountered and resolved the issue with trying to reference javax.crypto.* as an import with the Netweaver Development Studio?
i.e. Add a line like the following to your code:
Cipher c;
Then organise imports; and javax.cryto.cipher will be added but not found.
Thanks,
Matt
Simple really - Just needed to add JCE.jar reference to project (wasn't automatically done like the others). Oh well - now I can debug my provider problem.
Similar Messages
-
NoClassDefFoundError javax.crypto.spec.secretkeyspec from console
Hello, I have done a program in eclipse, using the JCE to encrypt and decrypt some messages using AES. In the eclipse graphical interface it works perfect, but if i run it from console, i mean like this
java -jar org.eclipse.osgi_3.6.0.v20100517.jar -console -configuration config_path -clean -dev file:dev.properties_path
It works but throw the exception
NoClassDefFoundError javax.crypto.spec.secretkeyspec
I think there must be something wrong with the java path because JCE is already inside the jre environment. I need to know how can i indicate in the command line, the right path to the JCE
I am working on windows
Thank you!yes, i mean
NoClassDefFoundError javax.crypto.spec.SecretKeySpec
but i wrote it fast and i didn't realize....
My output for java -version is
java version "1.6.0_21"
Java (TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)
So i think that outside eclipse i am using the good one, then i don't know why it doesn't work. Actually, i forgot to say that in the log file, i get this exception message:
!ENTRY org.eclipse.osgi 4 0 2010-10-15 11:35:12.273
!MESSAGE Application error
!STACK 1
java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at org.eclipse.core.runtime.adaptor.EclipseStarter.main(EclipseStarter.java:150)
So maybe this is the real problem. I am sorry but i am not really used to launch java applications from console (i always do it with eclipse) so, i don't really know if i need some more parameters or what happen.
My config.ini file is the same that eclipse uses when it launches the application, and the dev.properties file is also the same. -
Javax.crypto.BadPaddingException: unknown block type - URGENT
I am trying to encryp-decrypt a file (serialized xml file ) using BC provider with RSA algorithm and PKCS1Padding padding..
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC")
Sequence of action is encrypt - base64encode -
base64decode - decrypt.
Encryption seems to be working fine but while decrypting it gives the error mentioned below:
javax.crypto.BadPaddingException: unknown block type
I tried using OAEPPadding - In that scenario I get this error
javax.crypto.BadPaddingException: data hash wrong
I tried searching the cause and resolution of the problems on various resources on net but in vain. Need it urgently. PLS HELP. THANKS
I am pasting my code below :
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import java.security.spec.EncodedKeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
import org.apache.log4j.Logger;
import org.bouncycastle.jce.provider.*;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class EncryptBase64File
protected static final String ALGORITHM = "RSA";
private static Logger logger = Logger.getLogger(EncryptFiles.class.getClass());
private EncryptBase64File()
* Init java security to add BouncyCastle as an RSA provider
public static void init()
Security.addProvider(new BouncyCastleProvider());
* Generate key which contains a pair of privae and public key using 1024 bytes
* @return key pair
* @throws NoSuchAlgorithmException
public static KeyPair generateKey() throws NoSuchProviderException,NoSuchAlgorithmException
//KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
KeyPairGenerator keyGen =
KeyPairGenerator.getInstance("RSA", "BC");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
return key;
* Encrypt a text using public key.
* @param text The original unencrypted text
* @param key The public key
* @return Encrypted text
* @throws java.lang.Exception
public static byte[] encrypt(byte[] text, PublicKey key) throws Exception
byte[] cipherText = null;
try
// get an RSA cipher object and print the provider
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
//Cipher cipher = Cipher.getInstance("RSA");
System.out.println("\nProvider is: " + cipher.getProvider().getInfo());
System.out.println("\nStart encryption with public key");
if (logger.isDebugEnabled())
logger.debug("\nProvider is: " + cipher.getProvider().getInfo());
logger.debug("\nStart encryption with public key");
// encrypt the plaintext using the public key
cipher.init(Cipher.ENCRYPT_MODE, key);
cipherText = cipher.doFinal(text);
catch (Exception e)
logger.error(e, e);
throw e;
return cipherText;
* Encrypt a text using public key. The result is enctypted BASE64 encoded text
* @param text The original unencrypted text
* @param key The public key
* @return Encrypted text encoded as BASE64
* @throws java.lang.Exception
public static String encrypt(String text, PublicKey key) throws Exception
String encryptedText;
try
byte[] cipherText = encrypt(text.getBytes("UTF8"),key);
encryptedText = encodeBASE64(cipherText);
System.out.println("Enctypted text is: " + encryptedText);
logger.debug("Enctypted text is: " + encryptedText);
catch (Exception e)
logger.error(e, e);
throw e;
return encryptedText;
* Decrypt text using private key
* @param text The encrypted text
* @param key The private key
* @return The unencrypted text
* @throws java.lang.Exception
public static byte[] decrypt(byte[] text, PrivateKey key) throws Exception
byte[] dectyptedText = null;
try
// decrypt the text using the private key
//Cipher cipher = Cipher.getInstance("RSA/CBC/PKCS1Padding","BC");
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
//Cipher cipher = Cipher.getInstance("RSA");
logger.debug("Start decryption");
System.out.println("Start decryption");
cipher.init(Cipher.DECRYPT_MODE, key);
dectyptedText = cipher.doFinal(text);
catch (Exception e)
logger.error(e, e);
throw e;
return dectyptedText;
* Decrypt BASE64 encoded text using private key
* @param text The encrypted text, encoded as BASE64
* @param key The private key
* @return The unencrypted text encoded as UTF8
* @throws java.lang.Exception
public static String decrypt(String text, PrivateKey key) throws Exception
String result;
try
// decrypt the text using the private key
byte[] dectyptedText = decrypt(decodeBASE64(text),key);
result = new String(dectyptedText, "UTF8");
logger.debug("Decrypted text is: " + result);
catch (Exception e)
logger.error(e, e);
throw e;
return result;
* Encode bytes array to BASE64 string
* @param bytes
* @return Encoded string
private static String encodeBASE64(byte[] bytes)
BASE64Encoder b64 = new BASE64Encoder();
return b64.encode(bytes);
* Decode BASE64 encoded string to bytes array
* @param text The string
* @return Bytes array
* @throws IOException
private static byte[] decodeBASE64(String text) throws IOException
BASE64Decoder b64 = new BASE64Decoder();
return b64.decodeBuffer(text);
* Encrypt file using 1024 RSA encryption
* @param srcFileName Source file name
* @param destFileName Destination file name
* @param key The key. For encryption this is the Private Key and for decryption this is the public key
* @param cipherMode Cipher Mode
* @throws Exception
public static void encryptFile(String srcFileName, String destFileName, PublicKey key) throws Exception
encryptDecryptFile(srcFileName,destFileName, key, Cipher.ENCRYPT_MODE);
* Decrypt file using 1024 RSA encryption
* @param srcFileName Source file name
* @param destFileName Destination file name
* @param key The key. For encryption this is the Private Key and for decryption this is the public key
* @param cipherMode Cipher Mode
* @throws Exception
public static void decryptFile(String srcFileName, String destFileName, PrivateKey key) throws Exception
encryptDecryptFile(srcFileName,destFileName, key, Cipher.DECRYPT_MODE);
* Encrypt and Decrypt files using 1024 RSA encryption
* @param srcFileName Source file name
* @param destFileName Destination file name
* @param key The key. For encryption this is the Private Key and for decryption this is the public key
* @param cipherMode Cipher Mode
* @throws Exception
public static void encryptDecryptFile(String srcFileName, String destFileName, Key key, int cipherMode) throws Exception
OutputStream outputWriter = null;
InputStream inputReader = null;
try
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
String textLine = null;
byte[] buf = cipherMode == Cipher.ENCRYPT_MODE? new byte[100] : new byte[128];
int newBuffer;
// init the Cipher object for Encryption...
cipher.init(cipherMode, key);
// start FileIO
outputWriter = new FileOutputStream(destFileName);
inputReader = new FileInputStream(srcFileName);
while ( (bufl = inputReader.read(buf)) != -1)
String encText = null;
String base64EncText = null ;
if (cipherMode == Cipher.ENCRYPT_MODE)
encText = encrypt(getBytes(buf,newBuffer).toString(),(PublicKey)key);
else
encText = decrypt(getBytes(buf,newBuffer).toString(),(PrivateKey)key);
outputWriter.write(encText.getBytes());
outputWriter.flush();
catch (Exception e)
logger.error(e,e);
throw e;
finally
try
if (outputWriter != null)
outputWriter.close();
if (inputReader != null)
inputReader.close();
catch (Exception e)
public static byte[] getBytes(byte[] arr, int length)
byte[] newArr = null;
if (arr.length == length)
newArr = arr;
else
newArr = new byte[length];
for (int i = 0; i < length; i++)
newArr[i] = (byte) arr;
return newArr;
public static void main(String args[])
throws Exception
init();
KeyPair keyPair = generateKey();
PublicKey pubKey = keyPair.getPublic();
PrivateKey privKey = keyPair.getPrivate();
encryptFile("C:\\Temp\\TestFile.xml","C:\\Temp\\RSAEncryptedText.xml",pubKey);
decryptFile("C:\\Temp\\RSAEncryptedText.xml","C:\\Temp\\RSADecryptedText.xml",privKey);I think you are the same poster as 'contebral'. Why the multiple identities?
First off, the code you posted doesn't even compile. The getBytes() method has an error. Also, in method encryptDecryptFile() the variable bufl is not declared.
The rest of the code is a mess. The toString() method does not do what you think it does; you're just going to get the object reference id. There is no reason to keep converting to/from byte arrays and Strings. Most of the time your data should be kept as a byte array, only possibly converting for I/O operations.
The size of the base64 encoded output is not 128 bytes, it is 172 bytes. At this point I ran out of patience and stopped looking.
There is no shame in being a beginner in Java, but you must walk before you can run. Stop running. -
Error after creating a new dimension in dev studio
Hi,
I have set up ATG 10.1.2 along Endeca 3.1.1
For the CRS application the cartridges are shown properly.
But once I create an autogen dimension from dev studio and run the baseline the navigation cartridges disappear giving the below mentioned error.
error=com.endeca.infront.navigation.NavigationException: com.endeca.navigation.ENEException: HTTP Error 404 - Navigation Engine not able to process request 'http://localhost:15000/graph?node=10098&refinement=dimvalid:10093+dynrank:0+exposed:1&refinement=dimvalid:10001+dynrank:0+exposed:1&refinement=dimvalid:10002+dynrank:0+exposed:1&refinement=dimvalid:1+dynrank:0+exposed:1&refinement=dimvalid:10011+dynrank:0+exposed:1&groupby=product.repositoryId&offset=0&nbins=0&allbins=1&autophrase=1&autophrasedwim=1&filter=AND%28product.priceListPair%3asalePrices_listPrices%2cOR%28product.siteId%3astoreSiteUS%29%29&irversion=640'., displayNameProperty=displayName_en, dimensionId=10001, buryRefinements=[]}, {showMoreLink=false, sort=default, @type=RefinementMenu, boostRefinements=[], maxNumRefinements=200, numRefinements=10, displayNamePropertyAlias=displayName, name=Size, moreLinkText=Show More Refinements..., dimensionName=clothing-sku.size
I have also put the --back_compat flag as 640 but even then getting the same error.
Only the redeployment of full application removes the error.
Please suggest if anyone has faced similar issue.
Regards,
VarunPlease see the suggested solutions in the following docs.
Entity Maps Not Defined For Attachment Error When Selecting A Deliverable (Doc ID 358385.1)
Corrupt Personalization - No Entities Found Entitymaps Not Defined For Attachment Item (Doc ID 1085011.1)
R12:Supplier Page Unexpected Error: 'No Entities Found EntityMaps not Defined for Attachment Item' (Doc ID 1361320.1
Geography Hierarchy No Entities Found, EntityMaps Not Defined For Attachment Item (Doc ID 831088.1)
Depot Repair Bulk Receiving Error: "No entities found, entityMaps not defined for attachment item" (Doc ID 1357977.1)
Thanks,
Hussein -
Unable to Decrypt the data properly using javax.crypto class and SunJCE
Hello all,
I am not new to Java but new to this forums
but and JCE and i wanted to write a program that Encrypts a file and also another program that decrypts it. As far Encryption is concerned i have been successful but When it comes to Decryption things aren't looking bright i have some or the other Problem with it. plz help me out .
Here is the Code for my Programs
Encryption
Code:
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.security.*;
import javax.swing.*;
class MyJCE
public static void main(String args[])throws Exception
Provider sunjce = new com.sun.crypto.provider.SunJCE();
Security.addProvider(sunjce);
JFileChooser jfc = new JFileChooser();
int selection= jfc.showOpenDialog(null);
if(selection==JFileChooser.APPROVE_OPTION)
FileInputStream fis = new FileInputStream(jfc.getSelectedFile());
System.out.println("Selected file " + jfc.getSelectedFile());
try{
KeyGenerator kg = KeyGenerator.getInstance("DESede");
SecretKey key= kg.generateKey();
byte[] mkey=key.getEncoded();
System.out.println(key);
SecretKeySpec skey = new SecretKeySpec(mkey, "DESede");
Cipher cipher=Cipher.getInstance("DESede/ECB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE,skey);
byte[] data= new byte[fis.available()];
//reading the file into data byte array
byte[] result= cipher.update(data);
byte[] enc= new byte [fis.read(result)];
System.out.println("Encrypted =" + result);
File fi= new File("/home/srikar/Encrypted");
FileOutputStream fos= new FileOutputStream(fi);
fos.write(enc);
fos.close();
byte[] encodedSpeckey = skey.getEncoded();
FileOutputStream ks= new FileOutputStream("./key.txt");
ks.write(encodedSpeckey);
System.out.println("Key written to a file");
}//try
catch(Exception ex)
ex.printStackTrace();
}//catch
}This Creates a Encrypted File. and a Encrypted key.txt
Code:
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.security.*;
import javax.swing.*;
class Decrypt
public static void main(String[] args)
try
JFileChooser jfc = new JFileChooser();
int selection= jfc.showOpenDialog(null);
if(selection==JFileChooser.APPROVE_OPTION)
FileInputStream fis = new FileInputStream(jfc.getSelectedFile());
System.out.println("Selected file " + jfc.getSelectedFile());
//Read from the Encrypted Data
int ll= (int)jfc.getSelectedFile().length();
byte[] buffer = new byte[ll];
int bytesRead=fis.read(buffer);
byte[] data= new byte[bytesRead];
System.arraycopy(buffer,0,data,0,bytesRead);
//Read the Cipher Settings
FileInputStream rkey= new FileInputStream("./key.txt");
bytesRead = rkey.read(buffer);
byte[] encodedKeySpec=new byte[bytesRead];
System.arraycopy(buffer,0,encodedKeySpec,0,bytesRead);
//Recreate the Secret Symmetric Key
SecretKeySpec skeySpec= new SecretKeySpec(encodedKeySpec,"DESede");
//create the cipher for Decrypting
Cipher cipher = Cipher.getInstance("DESede/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE,skeySpec);
byte[] decrypted= cipher.update(data);
FileOutputStream fos= new FileOutputStream("/home/srikar/Decrypted");
fos.write(decrypted);
}//if
}//try
catch(Exception e)
e.printStackTrace();
}//catch
}//main
}//classthis Decrypt.java is expected to decrypt the above encrypted file but this simply creates a plaintext file of the same size as the Encrypted file but its contents are unreadable.
Or I endup with Exceptions like BadPadding or IllegalBlockSize Exception if i use any other Algorithm .
Please help out
thanx in advanceSrikar2871 wrote:
Well thanx for ur reply but
As i said there are No issues with ENCRYPTION and am getting an Encrypted file exactly of the same size as that of the original file and NOT as null bytes and Even am able to get a Decrypted file of again the same size of the Encrypted File but this time that data inside is in unreadable format.I ran your code EXACTLY* as posted and the contents of the file when viewed in a Hex editor was
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00So unless you are running different code to what you have posted, your file will look the same.
Cheers,
Shane -
When to use WEb Dynpro application and Portal application in NW dev studio
I would like to know what is the difference between
webdynpro application and EP Application using PDK.
Are they comaparable ...Which one has an edge over the other specific to any applications.
I want develop an application related to e-commerce using the SAP R3 as backend for an industiry(where in a registered user can place an order and query on the staus of order. All the data will be stored in R3 ).
I am planning to dev this using NW dev studio , but have an appehension about which application is useful for this kind of application either webdynpro or EP application .
can anybody explain which one has edge over the other ( Webdynpro or EP applcations in context with NW Dev studio) and why.
thanks
PKHi,
<b>Webdynpro</b> is used when requirements ask for a prototype using minimal time n effort.
Highly skilled programmers are not necessary to write a webdynpro application
It uses dynamic controls without reloading the page.
<b>Portal components</b> esp Abstract portal component provides a lean method to write HTML command to web client
Large interactive components requires more programming.
<b>WebDynpro</b> is a highly declarative, tool-based programming model. It minimizes platform-dependent "plumbing" code for building UIs and maximizes declarative metadata describing huge portions of a typical application in a platform-independent way.
Web Dynpro follows a "top-down" approach in order to consistently support multiple runtime platforms.
In Web Dynpro you just have to drag & drop the UI components.
<b>Portal components</b> has followed a "bottom-up", programming-driven approach to Web development.
Regards,
Pooja. -
Using javax.crypto in oracle 10g
Hi,
I have a java stored procedure for oracle 10g (running jdk1.4) that
uses the javax.crypto package and the bouncy castle provider for RSA
decryption. Here is a snippet of the code in the procedure:
Security.addProvider(new
org.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher rsaCipher = Cipher.getInstance("RSA");
RSAPrivateKey key = (RSAPrivateKey)
MSPrivKeytoJKey.getPrivateKey(aKey);
rsaCipher.init(Cipher.DECRYPT_MODE, key);
rsaCipher.doFinal(encryptedByteArray);
This works fine on my own machine running jdk1.4. However, when I load
my stored procedure into the database and run it, I get the following
exception after the line
Cipher rsaCipher = Cipher.getInstance("RSA");
tries to execute:
java.security.NoSuchAlgorithmException: Cannot find any provider
supporting RSA
I have tried the following (based on information gathered from various
forums):
- ran
loadjava -u username/pass@DB -v bcprov-jdk14-137.jar
- added the following line to java.security
security.provider.4=org.bouncycastle.jce.provider.BouncyCastleProvider
but i still get the same error.
I am reaching out desperately to all you experts for help :)
PouriaHi,
Unfortunately, the Java VM only supports the basic JDK functionalities; you could try the Metalink Note 356123.1 which should work using BC library but this note only addresses AES.
Furthermore, you need the following two extra permissions:
exec dbms_java.grant_permission('SCOTT', 'SYS:java.security.SecurityPermission','putProviderProperty.BC', '' );
exec dbms_java.grant_permission( 'SCOTT', 'SYS:java.security.SecurityPermission','insertProvider.BC', '' );
Oboviously SCOTT would be changed to whichever schema you are using.
Kuassi http://db360.blogspot.com -
Issue in workbench integration with Dev studio on unix machine
Hi,
I am trying to integrate my workbench on unix machine with dev studio on windows machine. To do so, I did the following:
1. created a new application in dev studio
2. In dev studio - Tools - Workbench settings I gave the host and port of my unix workbench. It was able to connect properly.
3. Then through Tools - Workbench - Set Instance Configuration, I sent these configurations of my application on dev studio to that of workbench(which I had selected earlier in step #2)
4. Then in my unix machine, I replaced the wine data with my new data feed
5. Ran initialize services, load baseline update and baseline update scripts.
5. My baseline update script Failed at Forge with the following error:
FATAL 03/07/13 12:21:30.718 UTC (1362658890718)
+FORGE {config}: Could not open "/app/ENDECA/endeca/endeca/apps/Test/data/processing/wine_data.txt.gz": No such file or directory +
+ERROR 03/07/13 12:21:30.719 UTC (1362658890719) FORGE {config}: Forge failed with 1 error and 0 warnings.+
I am not able to figure out why it is still looking for wine data. Any suggestions on this are highly welcome!
Thanks,
VineetVineet,
Using a text editor, search for "wine.data.txt.gz" in your ./Test/config/pipeline/pipeline.epx. If you find it, note the record adapter's name trying to read it and then remove it in DEV Studio and reupload your pipeline project. If you don't find it, check the same file in the ./Test/data/processing/pipeline.epx directory. If you find it there, you may have an issue with your baseline update script as defined in your ./Test/config/script/AppConfig.xml file. Make sure that your Forge.getConfig(); command is successfully copying contents from the ./Test/config/pipeline directory to the ./Test/data/processing directory (you may want to clear out the processing directory before your next run to make sure of it).
HTH,
Dan
http://branchbird.com -
Javax.crypto.BadPaddingException: Given final block not properly padded
import java.security.*;
import javax.crypto.*;
public class Cryptographer
private final String DEFAULT_KEY="1111111111111111";
private String KEY;
public Cryptographer(String key)
if((key==null)||key.equals(""))
this.KEY = DEFAULT_KEY;
else
this.KEY = key;
public byte[] encrypt(String toEncrypt)
if((toEncrypt==null)||(toEncrypt.trim().equals("")))
return null;
try
return DESEncrypt(toEncrypt,KEY);
catch(Exception e)
e.printStackTrace();
return null;
public String decrypt(byte[] bytes)
if(bytes==null)
return null;
try
return DESDecrypt(bytes,KEY);
catch(Exception e)
e.printStackTrace();
return null+"hi";
public String ToMac(byte[] bytes,String key)
if(bytes==null)
return null;
try
return getMac(bytes,KEY);
catch(Exception e)
return null;
private byte[] DESEncrypt(String toEncrypt, String key)
throws Exception
// create a binary key from the argument key (seed)
SecureRandom sr = new SecureRandom(key.getBytes("UTF-8"));
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56,sr);
SecretKey sk = kg.generateKey();
// do the encryption with that key
Cipher cipher = Cipher.getInstance("DES");
//DES/CFB8/NOPadding;DES/OFB32/PKCS5Padding;DESEDE/ECB/PKCS5Padding;DES/ECB/NOPadding==DES
cipher.init(Cipher.ENCRYPT_MODE, sk);
byte[] encrypted = cipher.doFinal(toEncrypt.getBytes("UTF-8"));
return new sun.misc.BASE64Encoder().encode(encrypted).toUpperCase().getBytes();
//return encrypted;
private String DESDecrypt(byte[] toDecrypt, String key)
throws Exception
// create a binary key from the argument key (seed)
SecureRandom sr = new SecureRandom(key.getBytes("UTF-8"));
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56,sr);
SecretKey sk = kg.generateKey();
// do the decryption with that key
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, sk);
byte[] decrypted = cipher.doFinal(toDecrypt);
return new sun.misc.BASE64Encoder().encode(decrypted).toUpperCase();
//return new String(decrypted,"UTF-8");
//create mac String; byte[] to be maced
private String getMac(byte[] bytes,String key)
byte[] bmac =null;
try
// create a binary key from the argument key (seed)
SecureRandom sr = new SecureRandom(key.getBytes());
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56,sr);
SecretKey sk = kg.generateKey();
Mac mac = Mac.getInstance("HmacMD5");
//HmacMD5;HmacSHA1;PBEWith<mac> e.g PBEWithHmacSHA1
mac.init(sk);
bmac = mac.doFinal(bytes);
catch(Exception e)
e.printStackTrace();
return new String(bmac);
public String byte2hex(byte[] b) //��������������
String hs="";
String stmp="";
for (int n=0;n<b.length;n++)
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
if (n<b.length-1) hs=hs+"";
return hs.toUpperCase();
public static void main(String args[])
throws Exception
String key = new String("1111111111111111");
Cryptographer c = new Cryptographer(key); //use key to initialize the class
String str = new String("4A6C98EAEF14EAB6");
byte[] b = c.encrypt(str); //to encrypt data
System.out.println(b.length);
System.out.println("Encrypted data:"+new String(b)+":"+new String(c.byte2hex(b))); //println Encrypt data
String st = c.decrypt(str.getBytes()); //to decrypt data
System.out.println(st.getBytes().length);
System.out.println(st.length());
System.out.println("Decrypted data:"+st+":"+c.byte2hex(st.getBytes())); //println decrypt data
please help me! thaxOne: Use the [ code ] tags. Please. It'll only help you get answers.
Two: encrypt() is returning the getBytes() of the result of Base64'ing the ciphertext. Bad. The whole POINT to Base64 is to produce Strings from byte[]'s. Don't use Base64 to produce a byte[]. Change encrypt() to return the byte[] directly.
Three: Given that encrypt() is returning the byte[] from the Base64 - decrypt() needs to be ready to UNDO that. It isn't. decrypt() assumes the byte[] it's getting is the ciphertext. That's not what you're giving to it. It's very, very unhappy.
Four: your main() isn't even handing decrypt() the (bogus) return from encrypt(). Your main() is asking decrypt() to decrypt your plaintext. That trick never works...
Five: your choice of variable names in your main() is...suboptimal. If you'd chosen names that reflected the purpose of the variable (things like, say, 'plaintext' and 'ciphertext'), some of this would have been obvious.
Try the following:import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
public class Cryptographer {
private final String DEFAULT_KEY = "1111111111111111";
private String KEY;
public Cryptographer(String key) {
if ((key == null) || key.equals("")) {
this.KEY = DEFAULT_KEY;
} else {
this.KEY = key;
public byte[] encrypt(String toEncrypt) {
if ((toEncrypt == null) || (toEncrypt.trim().equals("")))
return null;
try {
return DESEncrypt(toEncrypt, KEY);
} catch (Exception e) {
e.printStackTrace();
return null;
public String decrypt(byte[] bytes) {
if (bytes == null)
return null;
try {
return DESDecrypt(bytes, KEY);
} catch (Exception e) {
e.printStackTrace();
return null +"hi";
public String ToMac(byte[] bytes, String key) {
if (bytes == null)
return null;
try {
return getMac(bytes, KEY);
} catch (Exception e) {
return null;
private byte[] DESEncrypt(String toEncrypt, String key) throws Exception {
// create a binary key from the argument key (seed)
SecureRandom sr = new SecureRandom(key.getBytes("UTF-8"));
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56, sr);
SecretKey sk = kg.generateKey();
// do the encryption with that key
Cipher cipher = Cipher.getInstance("DES");
//DES/CFB8/NOPadding;DES/OFB32/PKCS5Padding;DESEDE/ECB/PKCS5Padding;DES/ECB/NOPadding==DES
cipher.init(Cipher.ENCRYPT_MODE, sk);
byte[] encrypted = cipher.doFinal(toEncrypt.getBytes("UTF-8"));
return encrypted;
private String DESDecrypt(byte[] toDecrypt, String key) throws Exception {
// create a binary key from the argument key (seed)
SecureRandom sr = new SecureRandom(key.getBytes("UTF-8"));
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56, sr);
SecretKey sk = kg.generateKey();
// do the decryption with that key
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, sk);
byte[] decrypted = cipher.doFinal(toDecrypt);
return new String(decrypted,"UTF-8");
//create mac String; byte[] to be maced
private String getMac(byte[] bytes, String key) {
byte[] bmac = null;
try {
// create a binary key from the argument key (seed)
SecureRandom sr = new SecureRandom(key.getBytes());
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56, sr);
SecretKey sk = kg.generateKey();
Mac mac = Mac.getInstance("HmacMD5");
//HmacMD5;HmacSHA1;PBEWith<mac> e.g PBEWithHmacSHA1
mac.init(sk);
bmac = mac.doFinal(bytes);
} catch (Exception e) {
e.printStackTrace();
return new String(bmac);
public String byte2hex(byte[] b) //��������������
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
if (n < b.length - 1)
hs = hs + "";
return hs.toUpperCase();
public static void main(String args[]) throws Exception {
String key = new String("1111111111111111");
Cryptographer c = new Cryptographer(key); //use key to initialize the class
String str = new String("Hello world!");
byte[] ciphertext = c.encrypt(str); //to encrypt data
System.out.println(ciphertext.length);
System.out.println("Encrypted data:" + new String(c.byte2hex(ciphertext )));
String plaintext = c.decrypt(ciphertext ); //to decrypt data
System.out.println(plaintext.getBytes().length);
System.out.println(plaintext.length());
System.out.println("Decrypted data:" + plaintext ); //println decrypt data
}And please, please, PLEASE use the [ code ] tags...
Grant -
Problem when using javax.crypto.KeyGenerator in netbeans
This is my IDE information:
Product Version: NetBeans IDE 6.0.1 (Build 200801291616)
Java: 1.6.0_03; Java HotSpot(TM) Client VM 1.6.0_03-b05
System: Windows XP version 5.1 running on x86; Cp1252; en_US (nb)
I am trying to develop a Test jar file. I created some simple jar files and could upload it in mobile.
Now I want to implement some encryption. For that I started writing codes. But when trying to import javax.crypto.KeyGenerator class, netbeans is showing "cannot find symbol" error. I can use javax.crypto.Cipher/BadPaddingException/IllegalBlockSizeException/NoSuchPaddingException/spec/ShortBuffrException only. If i try to use any other class of javax.crypto, i get an error.
I am new to mobility.I downloaded netbean mobility package and Installed it.
Please provide some help.. thank you....This is my IDE information:
Product Version: NetBeans IDE 6.0.1 (Build 200801291616)
Java: 1.6.0_03; Java HotSpot(TM) Client VM 1.6.0_03-b05
System: Windows XP version 5.1 running on x86; Cp1252; en_US (nb)
I am trying to develop a Test jar file. I created some simple jar files and could upload it in mobile.
Now I want to implement some encryption. For that I started writing codes. But when trying to import javax.crypto.KeyGenerator class, netbeans is showing "cannot find symbol" error. I can use javax.crypto.Cipher/BadPaddingException/IllegalBlockSizeException/NoSuchPaddingException/spec/ShortBuffrException only. If i try to use any other class of javax.crypto, i get an error.
I am new to mobility.I downloaded netbean mobility package and Installed it.
Please provide some help.. thank you.... -
SOAP to SOAP call - javax.naming.Reference error - PI 7.1
Hi friends,
In our SOAP to SOAP scenario (synchronous) , we are getting the below error in SXMB_MONI.
Error:
com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: java.lang.Exception: #Begin#Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object.#End#
We have not used any custom module. In both sender & receiver CC only SAP standard module is there. Also there is no interface mapping in Interface Determination step.
We are not getting this error for all messages. But, some of the messages we are getting this error.
Kindly clarify friends.
Kind regards,
Jegathees P.Hi,
Thanks for your reply!!
My Scenario is File to SOAP to File.
Configred modules in Sender channal below:
Prcessing sequence:
Number Module Name Module Key
1.......... AF_Modules/RequestResponseBean.......1
2.......... CallSapAdapter..........................................2
3.......... AF_Modules/ResponseOnewayBean.......3
Module Configuration:
Module Key Parameter Name ParameterValue
1 passThrough true
3 receiverChannel receiverChannel name
3 receiverService receiverService name
please tell any more confiration requered.
Regards,
Ramesh -
Issue with javax.crypto.SecretFactory
I am getting the following error in the following code:
DESedeKeySpec spec = new DESedeKeySpec( baKey );
SecretKeyFactory keyFactory = SecretKeyFactory.getInstanc( "DESede" );
Here is the error message:
java.security.NoSuchAlgorithmException: Algorithm DESede not available
at javax.crypto.SunJCE_b.a(DashoA6275)
at javax.crypto.SecretKeyFactory.getInstance(DashoA6275)
I will really appreciate any help.Looks like it has something to do with the jdk installed on my machine. I changed the location of jdk and I get the following error:
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.DESedeCipher.engineDoFinal(DashoA6275)
at com.sun.crypto.provider.DESedeCipher.engineDoFinal(DashoA6275)
at javax.crypto.Cipher.doFinal(DashoA6275) -
Import javax.crypto not found error
Hi,
I have just installed the JDK1.7 on a windows machine.
Whenever I try to compile my module, I get an error on the import javax.crypto line. It tells me that it can't the javax\Crypto\Cipher.class.
I have the jdk installed on d:\glassfish3 and am pointing the classpath to d:\glassfish3\jdk7 (also tried d:\glassfish3\jdk7\jre as well) with no luck.
Any help would be greatly appreciated.
Thanks,
Drew Nathanson
Technical Synergy, Inc.Thanks. Maybe I should explain a little better.
I am using JBuilder 2006 to my IDE. This environment requires that you put in the path to the JRE/JDK.
I have uninstalled and downloaded the jdk again and this time i'm getting a strange error:
"test.java": cannot access javax.crypto.Cipher; bad class file: D:\Program Files\Java\jre7\lib\jce.jar\javax\crypto\Cipher.class, class file has wrong version 51.0, should be 49.0, Please remove or make sure it appears in the correct subdirectory of the classpath. at line 19, column 21
Now this is strange because i'm using the right library.
Is there something that I'm missing here?
Again, thanks for your help.
Drew Nathanson -
Class javax.crypto.SecretKey not found in import.
While compilation i am getting this error.
Class javax.crypto.SecretKey not found in import.
I am not able to figure it out . Please help me for that.
Is it related to some classpath setting.This error is due to the c:\windows\system32\java.exe being first on the path instead of the d:\jdev9i\jdk\bin\java.exe being picked up.
-
Javax.crypto.* is not present in JDK 1.4 plz help
Hi,
Currently i am using jdk 1.4 and I am trying to compile the security applications which are using javax.crypto.* package.
Hence it is giving error so can any one please help me how can I include this package into jdk 1.4 or is there any other alternative for it.
Need help immediately.
It would be apprciable if i get an immediate reply.
Thanks in advance.What is a "marker" interface?
Marker Interface pattern
c2.com - Marker Interface
experts.about.com - Marker Interfaces
The Purpose of the Marker Interface
Maximize your Design ROI with Marker Interfaces and JavaDoc
Maybe you are looking for
-
Hi all, I am using Exchange server 2013, my task is to create Service , that need's to monitor continuously for new mails of all Mailboxes in my server. if any user got new mail i need to get that Mail Subject, Mail Body, Sender Email Address [Fr
-
Hi there, I have defined a synonym group of words using Intermedia. The query I am using at the moment is: select * from textsyn where contains(description, 'about(the_search_word)')>0 Any ideas how can I query synonyms without losing the generality
-
Connecting Samsung Blu Ray BD-D6700 to wireless network
I got the Samsung BD-D6700 Blu Ray for Xmas and have not been able to set it up wirelessly, it doesn't see my network. Tried contacting Samsung support but they seem to think it is my Fios Router. Has anybody else had this issue and if so how did you
-
I'm missing photos from a project that I completed and saved.
I created a photobook on Iphoto and ordered it. Now that I've gone back to order another, half of the pictures are missing off of the book. Answers?
-
Cisco ACS Server Tacacs Based on LDAP AND Source IP Possible???
Hi All, I have used Cisco ACS tacacs for authentication based on Active Directory. Is it possible to use Active Directory as a criteria for authentication AND source IP? For example, if someone wants to log in to a certain device... they must have co