Where I find javax.crypto.Cipher?

Please... I don�t now the path for javax.crypto.Cipher. Can somebody help me?
Thanks

You can find it in the latest J2SE 1.4.
For J2SE v1.2.x and v1.3.x releases, you need to download Java Cryptography Extention (JCE) and install it explicitly.

Similar Messages

  • Javax.crypto.Cipher.a  noClassDefFoundError

    We have been encrypting a string using the JCE on our desktop weblogic environment. It works fine there (Windows)
    when we try it on our server (Unix), it blows up with the following error:
    java.lang.NoClassDefFoundError
    at javax.crypto.Cipher.a(DashoA6275)
    at javax.crypto.Cipher.getInstance(DashoA6275)
    here is the code:
    String key = PropertyReader.getProperty("key");
    BASE64Decoder decoder = new BASE64Decoder();
    byte[] rawKey = decoder.decodeBuffer(key);
    SecretKeySpec skeySpec = new SecretKeySpec(rawKey, "AES");
    Provider p = Security.getProvider("SunJCE");
    Cipher cipher = Cipher.getInstance("AES",p); // We also tried Cipher.getInstance(“AES”) but got the same exception
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
    byte[] encrypted = cipher.doFinal(participantId.getBytes());
    BASE64Encoder encoder = new BASE64Encoder();
    encryptedString = encoder.encodeBuffer(encrypted);
    the server is weblogic 8.1.5 with ssl enabled.
    if anyone had any tests to try or fixes, it would be great.

    Check the permissions on the jar files on your Unix server, particularly the JCE jar files if they were upgraded to support unlimited encryption.
    If the JVM finds a jar file, but cannot open it, the first exception thrown will be related to permissions on the JAR and it will complain the the ZIP cannot be opened. Subsequent attempts to access classes that are expected to be in that JAR file will result in a noClassDefFoundError.

  • Cannot find javax.crypto.KeyGeneratorSpi

    The following code compiles but
    I get a runtime error as follows.
    NoClassDefFoundError for javax.crypto.KeyGeneratorSpi
    I did a jar tf on the sunjce_provider.jar file and
    this class is not contained?
    It is in the jce1_2_1.jar file and is abstract.
    When at runtime the factory tries to create an instance
    of the keyGeneratorSpi I think it tries to get a concrete
    implementation of the class from the SunJCE implementation and cant find it?
    Is this correct.
    Obviously the classpath is set correct as I am able to
    import all of the SunJCE classes.
    Heres the code.
    import java.io.*;
    import java.util.*;
    import javax.crypto.*;
    import javax.crypto.spec.*;
    import com.sun.crypto.provider.*;
    import java.security.*;
    public class CryptoTest {
    public static void main(String[] args)
    KeyGenerator keygen = null;
    SecretKey desKey = null;
    Cipher desCipher = null;
    Security.addProvider( new com.sun.crypto.provider.SunJCE() );
    byte[] ciphertext;
    try
    keygen = KeyGenerator.getInstance("DES","SunJCE");
    catch(Exception e){
    System.out.println("Exception getting keygenerator");
    e.printStackTrace();
    }

    What jdk version do you use?
    I use the J2SDK 1.4.0-beta(contains the jce and the Sun JCE provider).
    And the following code works fine to me:
    KeyGenerator keygen = null;
    try {
    keygen = KeyGenerator.getInstance("DES","SunJCE");
    } catch(Exception e) {
    System.out.println("Exception getting keygenerator");
    e.printStackTrace();
    }

  • Where to find javax.management.snmp package

    where can i find the javax.management.snmp package? i have downloaded the java management extension (jmx) package, but the snmp package was not included.

    I think you can't find the jmx snmp package because it's currently under development.

  • Where to find javax.xml.bind and javax.jdo

    One of my application require import javax.xml.bind and javax.jdo packages. I could not find them. Someone can help to let me know where to download them or they come with some other toll\packages?
    Thanks
    John

    Hi John ,
    I have the same problem: Getting the javax.jdo Packge . . . .(WHERE ?)
    if you found out ow already, please tell me at: [email protected]
    thanks,
    edan

  • Where to find javax package??

    I got a javax package which holds only servlet package and now i need ejb which not there in my package..Please tell me where the javax whole package ????

    You can find the complete set of classes bundled with one of the jars provided by your Application Server. It's weblogic.jar in case you're having Weblogic App Server, jboss-j2ee.jar if you have JBoss on your box as the App Server and so on.
    cheers,
    fun_one

  • 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....

  • JMS SAF client cannot forward messages - Caused by: javax.crypto.BadPadding

    Hi,
    I seem to be struggling with a problem that I'm not sure if I can ever find a solution.
    I have a configured a local JMS client to forward my messages to a remote WLSB 9.2.
    The local client is running JDK 1_0_14 on a windows platform.
    The remote server is on IBM JRE on linux. Now I'm getting problems when the messages are forwarded by the local SAF client. The client does not seem to be able to decrypt the password I have in my SAFClient.xml. I have pretty much followed every line in the documentation of SAF client and has already revisited it a few times.
    It seems to be something to do with the ClientSAFEncrypt utility that I was advised to get the encrypted password which I have put in the XML File. Here is the exception. Any help will be greatly appreciated.
    All I know is it is something to do with encoding of the password, but I cannot get a clue what else.
    <Mar 25, 2008 12:28:40 PM PDT> <Info> <Store> <BEA-280050> <Persistent store "SAFSTORE0V" opened: directory="C:\depot\javaSrc\logging\stores\default" writePolicy="Direct-Write" blockSize=512 directIO=false driver="NIO">
    javax.naming.NamingException: Invalid password key to unlock the passwords in the configuration file [Root exception is weblogic.jms.common.JMSException: Invalid password key to unlock the passwords in the configuration file]
         at weblogic.jms.safclient.jndi.InitialContextFactoryImpl.getNamingException(InitialContextFactoryImpl.java:31)
         at weblogic.jms.safclient.jndi.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:162)
         at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
         at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
         at javax.naming.InitialContext.init(InitialContext.java:223)
         at javax.naming.InitialContext.<init>(InitialContext.java:197)
         at com.netflix.messaging.ESBFactory.<init>(ESBFactory.java:103)
         at com.netflix.messaging.ESBFactory.getFactory(ESBFactory.java:45)
         at com.netflix.messaging.NFMessagingManager.getProducerHandle(NFMessagingManager.java:218)
         at com.netflix.messaging.NFMessagingManager.initProducers(NFMessagingManager.java:730)
         at com.netflix.messaging.NFMessagingManager.init(NFMessagingManager.java:863)
         at com.netflix.messaging.NFMessagingManager.start(NFMessagingManager.java:1461)
         at com.netflix.messaging.NFMessagingManager.start(NFMessagingManager.java:1628)
         at com.netflix.logging.messaging.MessageDestinationDispatcher.startMessagingManager(MessageDestinationDispatcher.java:164)
         at com.netflix.logging.messaging.MessageDestinationDispatcher.<init>(MessageDestinationDispatcher.java:25)
         at com.netflix.logging.NFMessageAppender.append(NFMessageAppender.java:72)
         at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
         at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
         at org.apache.log4j.Category.callAppenders(Category.java:206)
         at org.apache.log4j.Category.forcedLog(Category.java:391)
         at org.apache.log4j.Category.log(Category.java:838)
         at com.netflix.logging.log4jAdapter.Log4jLoggingAdapter.log(Log4jLoggingAdapter.java:64)
         at com.netflix.logging.NFLogger.log(NFLogger.java:125)
         at com.netflix.logging.LogManager.info(LogManager.java:152)
         at com.netflix.logging.aggregator.Bucketer.init(Bucketer.java:92)
         at com.netflix.logging.aggregator.Bucketer.<init>(Bucketer.java:80)
         at com.netflix.logging.aggregator.TracerAggregator.<init>(TracerAggregator.java:29)
         at com.netflix.logging.aggregator.TracerAggregator.<clinit>(TracerAggregator.java:20)
         at com.netflix.logging.NFLogger.start(NFLogger.java:105)
         at com.netflix.logging.LogManager.registerLogger(LogManager.java:67)
         at com.netflix.logging.test.LoggingTest.sendDefault(LoggingTest.java:32)
         at com.netflix.logging.test.LoggingTest.main(LoggingTest.java:19)
    Caused by: weblogic.jms.common.JMSException: Invalid password key to unlock the passwords in the configuration file
         at weblogic.jms.safclient.admin.ConfigurationUtils.doRemoteContexts(ConfigurationUtils.java:475)
         at weblogic.jms.safclient.agent.AgentManager.<init>(AgentManager.java:54)
         at weblogic.jms.safclient.ClientSAFDelegate.open(ClientSAFDelegate.java:65)
         at weblogic.jms.safclient.ClientSAFImpl.open(ClientSAFImpl.java:62)
         at weblogic.jms.safclient.jndi.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:160)
         ... 30 more
    Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
         at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
         at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
         at com.sun.crypto.provider.SunJCE_af.b(DashoA12275)
         at com.sun.crypto.provider.PBEWithMD5AndDESCipher.engineDoFinal(DashoA12275)
         at javax.crypto.Cipher.doFinal(DashoA12275)
         at weblogic.jms.common.SecHelper.decryptString(SecHelper.java:140)
         at weblogic.jms.safclient.admin.ConfigurationUtils.doRemoteContexts(ConfigurationUtils.java:473)
         ... 34 more
    java.lang.IllegalStateException: Cannot create context: Invalid password key to unlock the passwords in the configuration file
         at com.netflix.messaging.ESBFactory.<init>(ESBFactory.java:106)
         at com.netflix.messaging.ESBFactory.getFactory(ESBFactory.java:45)
         at com.netflix.messaging.NFMessagingManager.getProducerHandle(NFMessagingManager.java:218)
         at com.netflix.messaging.NFMessagingManager.initProducers(NFMessagingManager.java:730)
         at com.netflix.messaging.NFMessagingManager.init(NFMessagingManager.java:863)
         at com.netflix.messaging.NFMessagingManager.start(NFMessagingManager.java:1461)
         at com.netflix.messaging.NFMessagingManager.start(NFMessagingManager.java:1628)
         at com.netflix.logging.messaging.MessageDestinationDispatcher.startMessagingManager(MessageDestinationDispatcher.java:164)
         at com.netflix.logging.messaging.MessageDestinationDispatcher.<init>(MessageDestinationDispatcher.java:25)
         at com.netflix.logging.NFMessageAppender.append(NFMessageAppender.java:72)
         at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
         at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
         at org.apache.log4j.Category.callAppenders(Category.java:206)
         at org.apache.log4j.Category.forcedLog(Category.java:391)
         at org.apache.log4j.Category.log(Category.java:838)
         at com.netflix.logging.log4jAdapter.Log4jLoggingAdapter.log(Log4jLoggingAdapter.java:64)
         at com.netflix.logging.NFLogger.log(NFLogger.java:125)
         at com.netflix.logging.LogManager.info(LogManager.java:152)
         at com.netflix.logging.aggregator.Bucketer.init(Bucketer.java:92)
         at com.netflix.logging.aggregator.Bucketer.<init>(Bucketer.java:80)
         at com.netflix.logging.aggregator.TracerAggregator.<init>(TracerAggregator.java:29)
         at com.netflix.logging.aggregator.TracerAggregator.<clinit>(TracerAggregator.java:20)
         at com.netflix.logging.NFLogger.start(NFLogger.java:105)
         at com.netflix.logging.LogManager.registerLogger(LogManager.java:67)
         at com.netflix.logging.test.LoggingTest.sendDefault(LoggingTest.java:32)

    Hi,
    I seem to be struggling with a problem that I'm not sure if I can ever find a solution.
    I have a configured a local JMS client to forward my messages to a remote WLSB 9.2.
    The local client is running JDK 1_0_14 on a windows platform.
    The remote server is on IBM JRE on linux. Now I'm getting problems when the messages are forwarded by the local SAF client. The client does not seem to be able to decrypt the password I have in my SAFClient.xml. I have pretty much followed every line in the documentation of SAF client and has already revisited it a few times.
    It seems to be something to do with the ClientSAFEncrypt utility that I was advised to get the encrypted password which I have put in the XML File. Here is the exception. Any help will be greatly appreciated.
    All I know is it is something to do with encoding of the password, but I cannot get a clue what else.
    <Mar 25, 2008 12:28:40 PM PDT> <Info> <Store> <BEA-280050> <Persistent store "SAFSTORE0V" opened: directory="C:\depot\javaSrc\logging\stores\default" writePolicy="Direct-Write" blockSize=512 directIO=false driver="NIO">
    javax.naming.NamingException: Invalid password key to unlock the passwords in the configuration file [Root exception is weblogic.jms.common.JMSException: Invalid password key to unlock the passwords in the configuration file]
         at weblogic.jms.safclient.jndi.InitialContextFactoryImpl.getNamingException(InitialContextFactoryImpl.java:31)
         at weblogic.jms.safclient.jndi.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:162)
         at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
         at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
         at javax.naming.InitialContext.init(InitialContext.java:223)
         at javax.naming.InitialContext.<init>(InitialContext.java:197)
         at com.netflix.messaging.ESBFactory.<init>(ESBFactory.java:103)
         at com.netflix.messaging.ESBFactory.getFactory(ESBFactory.java:45)
         at com.netflix.messaging.NFMessagingManager.getProducerHandle(NFMessagingManager.java:218)
         at com.netflix.messaging.NFMessagingManager.initProducers(NFMessagingManager.java:730)
         at com.netflix.messaging.NFMessagingManager.init(NFMessagingManager.java:863)
         at com.netflix.messaging.NFMessagingManager.start(NFMessagingManager.java:1461)
         at com.netflix.messaging.NFMessagingManager.start(NFMessagingManager.java:1628)
         at com.netflix.logging.messaging.MessageDestinationDispatcher.startMessagingManager(MessageDestinationDispatcher.java:164)
         at com.netflix.logging.messaging.MessageDestinationDispatcher.<init>(MessageDestinationDispatcher.java:25)
         at com.netflix.logging.NFMessageAppender.append(NFMessageAppender.java:72)
         at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
         at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
         at org.apache.log4j.Category.callAppenders(Category.java:206)
         at org.apache.log4j.Category.forcedLog(Category.java:391)
         at org.apache.log4j.Category.log(Category.java:838)
         at com.netflix.logging.log4jAdapter.Log4jLoggingAdapter.log(Log4jLoggingAdapter.java:64)
         at com.netflix.logging.NFLogger.log(NFLogger.java:125)
         at com.netflix.logging.LogManager.info(LogManager.java:152)
         at com.netflix.logging.aggregator.Bucketer.init(Bucketer.java:92)
         at com.netflix.logging.aggregator.Bucketer.<init>(Bucketer.java:80)
         at com.netflix.logging.aggregator.TracerAggregator.<init>(TracerAggregator.java:29)
         at com.netflix.logging.aggregator.TracerAggregator.<clinit>(TracerAggregator.java:20)
         at com.netflix.logging.NFLogger.start(NFLogger.java:105)
         at com.netflix.logging.LogManager.registerLogger(LogManager.java:67)
         at com.netflix.logging.test.LoggingTest.sendDefault(LoggingTest.java:32)
         at com.netflix.logging.test.LoggingTest.main(LoggingTest.java:19)
    Caused by: weblogic.jms.common.JMSException: Invalid password key to unlock the passwords in the configuration file
         at weblogic.jms.safclient.admin.ConfigurationUtils.doRemoteContexts(ConfigurationUtils.java:475)
         at weblogic.jms.safclient.agent.AgentManager.<init>(AgentManager.java:54)
         at weblogic.jms.safclient.ClientSAFDelegate.open(ClientSAFDelegate.java:65)
         at weblogic.jms.safclient.ClientSAFImpl.open(ClientSAFImpl.java:62)
         at weblogic.jms.safclient.jndi.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:160)
         ... 30 more
    Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
         at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
         at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
         at com.sun.crypto.provider.SunJCE_af.b(DashoA12275)
         at com.sun.crypto.provider.PBEWithMD5AndDESCipher.engineDoFinal(DashoA12275)
         at javax.crypto.Cipher.doFinal(DashoA12275)
         at weblogic.jms.common.SecHelper.decryptString(SecHelper.java:140)
         at weblogic.jms.safclient.admin.ConfigurationUtils.doRemoteContexts(ConfigurationUtils.java:473)
         ... 34 more
    java.lang.IllegalStateException: Cannot create context: Invalid password key to unlock the passwords in the configuration file
         at com.netflix.messaging.ESBFactory.<init>(ESBFactory.java:106)
         at com.netflix.messaging.ESBFactory.getFactory(ESBFactory.java:45)
         at com.netflix.messaging.NFMessagingManager.getProducerHandle(NFMessagingManager.java:218)
         at com.netflix.messaging.NFMessagingManager.initProducers(NFMessagingManager.java:730)
         at com.netflix.messaging.NFMessagingManager.init(NFMessagingManager.java:863)
         at com.netflix.messaging.NFMessagingManager.start(NFMessagingManager.java:1461)
         at com.netflix.messaging.NFMessagingManager.start(NFMessagingManager.java:1628)
         at com.netflix.logging.messaging.MessageDestinationDispatcher.startMessagingManager(MessageDestinationDispatcher.java:164)
         at com.netflix.logging.messaging.MessageDestinationDispatcher.<init>(MessageDestinationDispatcher.java:25)
         at com.netflix.logging.NFMessageAppender.append(NFMessageAppender.java:72)
         at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
         at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
         at org.apache.log4j.Category.callAppenders(Category.java:206)
         at org.apache.log4j.Category.forcedLog(Category.java:391)
         at org.apache.log4j.Category.log(Category.java:838)
         at com.netflix.logging.log4jAdapter.Log4jLoggingAdapter.log(Log4jLoggingAdapter.java:64)
         at com.netflix.logging.NFLogger.log(NFLogger.java:125)
         at com.netflix.logging.LogManager.info(LogManager.java:152)
         at com.netflix.logging.aggregator.Bucketer.init(Bucketer.java:92)
         at com.netflix.logging.aggregator.Bucketer.<init>(Bucketer.java:80)
         at com.netflix.logging.aggregator.TracerAggregator.<init>(TracerAggregator.java:29)
         at com.netflix.logging.aggregator.TracerAggregator.<clinit>(TracerAggregator.java:20)
         at com.netflix.logging.NFLogger.start(NFLogger.java:105)
         at com.netflix.logging.LogManager.registerLogger(LogManager.java:67)
         at com.netflix.logging.test.LoggingTest.sendDefault(LoggingTest.java:32)

  • Javax.crypto.BadPaddingException: pad block corrupted  when using Java 1.4

    I'm getting a javax.crypto.BadPaddingException: pad block corrupted Exception while working on converting our existing java jdk 1.2 to java 1.4. Any suggestions would be great. Here are the specifics:
    We have a web application that been running for 3+ years under java jdk 1.2 & jce_1_2.jar. Within the application we are exchanging data (XML) with a customer using the following encryption scheme:
    1) We create a one time DESede key through the KeyGenerator class passing in ("DESede", "BC")
    2) We encrypt the data with this one time key using ("DESede/ECB/PKCS5Padding", "BC")
    3) This one time key is then encrypted using ("RSA/ECB/PKCS1Padding", "BC") and customer's public key
    4) We create a signature with our private key, which they have the public key for.
    This is process/api that we required to use for their API's and its worked fine under 1.2, with "ABA" as the provider. Now moving to 1.4, I'm using BouncyCastle as the provider.
    Other differences, the keystore was created under 1.2 and in 1.2 it was defined as "JCEKS" provider "SunJCE" under 1.4 I changed them to "JKS" and "SUN" . I would get bad header exceptions when reading from the keystore until I changed it. I don't think its the BouncyCastle since I was able to download the 1.2 version of BC and get the existing app to work and I also got the 1.4 version of BC to work under the existing 1.2 application.
    So something seems to be different with the algorithms/padding, but I can't seem to find it. I tried the following: "RSA" "RSA/ECB" "RSA//PKCS1Padding" "NoPadding" also changed the DESede algorithm with no luck. All I know is that its failing on the decryption of the one time key, since its failing on the customer side, I don't have much other insight into it, other then the exception that they sent me.
    More info: getting error on Java: build 1.4.2_02-b03 on Solaris 5.8
    Existing application running: Java JDK_1.2.2_10 on Solaris 5.8
    BouncyCastle: bcprov-jdk14-124.jar
    Thanks

    Here is the stackTrace that I was sent:
    20040804;10:29:37: javax.crypto.BadPaddingException: pad block corrupted
    20040804;10:29:37: at org.bouncycastle.jce.provider.JCEBlockCipher.engineDo
    Final(JCEBlockCipher.java:460)
    20040804;10:29:37: at javax.crypto.Cipher.doFinal(Cipher.java:1129)
    20040804;10:29:37: at com.customer.crypto.SymmetricCryptor.decrypt(SymmetricCryptor.java:105)
    20040804;10:29:37: at com.customer.crypto.SymmetricCryptor.decryptToStr
    ing(SymmetricCryptor.java:95)
    20040804;10:29:37: at com.customer.api.Data.DataServlet doPost(DataServlet.java:88)

  • Javax.crypto .. NoSuchAlgorithmException

    import javax.crypto.Cipher;
    public class CipherClass
    public static void main(String[] args)
    Cipher c=Cipher.getInstance("DES");
    Compiling this file gives me a java.security.NoSuchAlgorithmException. Kindly guide me. I'm using jdk 1.6.

    Hi,
    now i am getting foolowing exception,after making small changes to above program can anyone help me in finding out what does it mean?
    Exception in thread "main" java.lang.ExceptionInInitializerError
    at javax.crypto.KeyGenerator.getInstance(DashoA6275)
    at AAACreateKey.doIt(waste.java:17)
    at waste.main(waste.java:27)
    Caused by: java.lang.SecurityException: Cannot set up certs for trusted CAs
    at javax.crypto.SunJCE_b.<clinit>(DashoA6275)
    ... 3 more
    Caused by: java.security.PrivilegedActionException: java.security.cert.CertificateException: X.509 not fo
    und
    at java.security.AccessController.doPrivileged(Native Method)
    ... 4 more
    Caused by: java.security.cert.CertificateException: X.509 not found
    at java.security.cert.CertificateFactory.getInstance(CertificateFactory.java:191)
    at javax.crypto.SunJCE_b.b(DashoA6275)
    at javax.crypto.SunJCE_b.a(DashoA6275)
    at javax.crypto.SunJCE_v.run(DashoA6275)
    ... 5 more
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at java.security.cert.CertificateFactory.getInstance(CertificateFactory.java:177)
    ... 8 more
    Caused by: java.security.NoSuchAlgorithmException: X.509 CertificateFactory not available
    at java.security.Security.getEngineClassName(Security.java:583)
    at java.security.Security.getEngineClassName(Security.java:594)
    at java.security.Security.getImpl(Security.java:1043)
    ... 13 more

  • Javax.crypto.* and javax.crypto.spec.* problem with MHP receiver

    Hello to everyone, I started to program in MHP 1.0.2 on a MHP receiver and now i'm practicing in encrypting and decrypting. I load from the smart card in the MHP receiver an X509Certificate object (I have it both in byte[] form, called certArray, and X509Certificate object, called "certificate"). What i'd like to do is to :
    1)calculate digest of the certificate (line 1 and 2 of the following code)
    2) encrypt the digest using the same algorithm of the certificate (see line 3 and 4)
    The problem is generated at line 3 : the receiver, probably, doesn't find the class of the algorithm of encrypting. It is important to notice that the instruments to encrypt/decrypt are included in javax.crypto and javax.crypto.spec packages.
    MessageDigest md = MessageDigest.getInstance("SHA");
    byte[] digest = md.digest(certArray);
    Cipher encrypt = Cipher.getInstance(certificate.getSigAlgName());
    encrypt.init(Cipher.ENCRYPT_MODE, certificate.getPublicKey());
    The error message, in the log file, is the following :
    [0#1:2] java.security.NoSuchAlgorithmException: SHA1withRSA not found
         [0#1:2]      at javax.crypto.Cipher.getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;(Unknown Source)
         [0#1:2]      at it.csp.SecurelabXlet.encrypt()V(Unknown Source)
         [0#1:2]      at it.csp.SecurelabXlet.cardInserted(Lopencard/core/event/CardTerminalEvent;)V(Unknown Source)
         [0#1:2]      at opencard.core.event.EventGenerator.createEventsForPresentCards(Lopencard/core/event/CTListener;)V(Unknown Source)
         [0#1:2]      at it.csp.SecurelabXlet.register()V(Unknown Source)
         [0#1:2]      at it.csp.SecurelabXlet.startXlet()V(Unknown Source)
         [0#1:2]      at java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(Unknown Source)
         [0#1:2]      at tv.osmosys.application.AppManager$XletApp.xletStart()Z(Unknown Source)
         [0#1:2]      at tv.osmosys.application.AppManager$XletApp.loop0(Ltv/osmosys/application/AppManager$XletAction;)V(Unknown Source)
         [0#1:2]      at tv.osmosys.application.AppManager$XletApp.run()V(Unknown Source)
         [0#1:2]      at java.lang.Thread.run()V(Unknown Source)
         [0#1:2]      at java.lang.Thread.startup(Z)V(Unknown Source)
    My question(s) is : how can I include javax.crypto and javax.crypto.spec in the Xlet application to upload it onto the MHP receiver?? Is it possibile to do so?
    Eventually, do other libraries exist to use encrypting algorithms, included in MHP? The version I use of MHP is 1.0.2. Thank you! Bye!

    Hello to everyone, I started to program in MHP 1.0.2 on a MHP receiver and now i'm practicing in encrypting and decrypting. I load from the smart card in the MHP receiver an X509Certificate object (I have it both in byte[] form, called certArray, and X509Certificate object, called "certificate"). What i'd like to do is to :
    1)calculate digest of the certificate (line 1 and 2 of the following code)
    2) encrypt the digest using the same algorithm of the certificate (see line 3 and 4)
    The problem is generated at line 3 : the receiver, probably, doesn't find the class of the algorithm of encrypting. It is important to notice that the instruments to encrypt/decrypt are included in javax.crypto and javax.crypto.spec packages.
    MessageDigest md = MessageDigest.getInstance("SHA");
    byte[] digest = md.digest(certArray);
    Cipher encrypt = Cipher.getInstance(certificate.getSigAlgName());
    encrypt.init(Cipher.ENCRYPT_MODE, certificate.getPublicKey());
    The error message, in the log file, is the following :
    [0#1:2] java.security.NoSuchAlgorithmException: SHA1withRSA not found
         [0#1:2]      at javax.crypto.Cipher.getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;(Unknown Source)
         [0#1:2]      at it.csp.SecurelabXlet.encrypt()V(Unknown Source)
         [0#1:2]      at it.csp.SecurelabXlet.cardInserted(Lopencard/core/event/CardTerminalEvent;)V(Unknown Source)
         [0#1:2]      at opencard.core.event.EventGenerator.createEventsForPresentCards(Lopencard/core/event/CTListener;)V(Unknown Source)
         [0#1:2]      at it.csp.SecurelabXlet.register()V(Unknown Source)
         [0#1:2]      at it.csp.SecurelabXlet.startXlet()V(Unknown Source)
         [0#1:2]      at java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(Unknown Source)
         [0#1:2]      at tv.osmosys.application.AppManager$XletApp.xletStart()Z(Unknown Source)
         [0#1:2]      at tv.osmosys.application.AppManager$XletApp.loop0(Ltv/osmosys/application/AppManager$XletAction;)V(Unknown Source)
         [0#1:2]      at tv.osmosys.application.AppManager$XletApp.run()V(Unknown Source)
         [0#1:2]      at java.lang.Thread.run()V(Unknown Source)
         [0#1:2]      at java.lang.Thread.startup(Z)V(Unknown Source)
    My question(s) is : how can I include javax.crypto and javax.crypto.spec in the Xlet application to upload it onto the MHP receiver?? Is it possibile to do so?
    Eventually, do other libraries exist to use encrypting algorithms, included in MHP? The version I use of MHP is 1.0.2. Thank you! Bye!

  • 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! thax

    One: 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

  • 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

  • AES with two keys javax.crypto.BadPaddingException

    Hello,
    I'am trying to encrypt / decrypt using AES, which performs correctly for one level encryption / decryption. However, when I am trying a two level encryption / decryption. I have this code:
    String message="This is just an example";
    byte[] raw="df5ea29924d39c3be8785734f13169c6".getBytes("ISO-8859-1");
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
    byte[] encrypted = cipher.doFinal((args.length == 0 ? "This is just an example" : args[0]).getBytes());
    System.out.println("encrypted string: " + asHex(encrypted));
    raw="ef5ea29924d39c3be8785734f13169c7".getBytes("ISO-8859-1");
    skeySpec = new SecretKeySpec(raw, "AES");
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
    byte[] encrypteded = cipher.doFinal(encrypted);
    raw="df5ea29924d39c3be8785734f13169c6".getBytes("ISO-8859-1");
    skeySpec = new SecretKeySpec(raw, "AES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);
    byte[] original1 = cipher.doFinal(encrypteded);
    raw="ef5ea29924d39c3be8785734f13169c7".getBytes("ISO-8859-1");
    skeySpec = new SecretKeySpec(raw, "AES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);
    byte[] original2 = cipher.doFinal(original1);
    I get this exception:
    Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
    at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:317)
    at javax.crypto.Cipher.doFinal(Cipher.java:1813)
    Thank you!

    marya_a wrote:
    Thank you for you replay. Can you tell me if there is a symmetric and commutative cryptosystem. Since XOR commutes I would expect that any of the stream ciphers that generate a stream of pseudo random bits and XOR these with the cleartext to create the ciphertext will work. RC4 and block algorithms (AES, DES etc) using modes such as CFB spring to mind.
    Of course these should only be used with random session keys since using fixed keys (as you seem to have) is fundamentally insecure.
    I know that RSA is commutative, I'm pretty sure that this applies only if all stages use the same modulus.
    but I want it to be also symmetric.Edited by: sabre150 on Apr 13, 2010 9:41 AM

Maybe you are looking for

  • My screen died!! Help!

    Last night I was using my unplugged MacBook pro, I was monitoring the battery left and when it got to 22%, the laptop turned itself off. (is that normal?) I rebooted it but the screen hasn't recovered, I've restarted a few times and I hear the engine

  • How to change bucket capacity for a certain date range (duration)?

    Hi, I need to update the bucket capacities of Resource at Vendor location in APO live cache for a particular period using BAPI_RSSRVAPS_CHANGEMULTI. Here I am executing BAPI by passing - Import Parameters: LOGICAL_SYSTEM COMMIT_CONTROL PLANNING_VERSI

  • Mail/Web possible font conflict?

    Having trouble with getting Mail to look right. There are large spaces between the lines in the top portion containing From, Subject, Date, To, etc. On some websites this space also occurs or the type lays on top of each other. In iTunes the lists ar

  • RSPO_LOCAL_PRINT - not store in spool ?

    Hello, RSPO_LOCAL_PRINT MF print in local printer but don't pass on the spool... Do you know similar MF rthat pass on spool ? tks, Roberto.

  • How do u write a LEFT JOIN in Oracle Developer Forms 6i?

    I have 2 tables:PERSDET and EMP_MEDICAL_LTA PERSDET has EMP_ID,EMP_NAME n some other fields. EMP_MEDICAL_LTA has EMP_ID,FIELD1,FIELD2 n some other fields EMP_ID is the common field between these 2 tables. My requirement is to display all the EMP_NAME