somehow the rest of the code went astray

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

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

public class PBE {

  public static byte[] enc(String passphrase, String source) throws
Exception {

    String algorithm = "PBEWithMD5AndDES";
    byte[] salt = new byte[8];
    int iterations = 20;

    KeySpec ks = new PBEKeySpec(passphrase.toCharArray());


    SecretKeyFactory skf = SecretKeyFactory.getInstance(algorithm);
    SecretKey key = skf.generateSecret(ks);

    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(passphrase.getBytes());
    md.update(source.getBytes ());
    byte[] digest = md.digest();
    System.arraycopy(digest,0,salt,0,8);

    AlgorithmParameterSpec aps = new PBEParameterSpec(salt, iterations);

    Cipher cipher = Cipher.getInstance(algorithm);
    cipher.init(Cipher.ENCRYPT_MODE, key, aps);
    byte[] output = cipher.doFinal(source.getBytes());

    byte[] result = new byte[8 + output.length];
    System.arraycopy(salt, 0, result, 0, 8);
    System.arraycopy(output, 0, result, 8, output.length);
    return result;
  }

  public static byte[] dec(String passphrase, byte[] source) throws
Exception {

    String algorithm = "PBEWithMD5AndDES";
    byte[] salt = new byte[8];
    int iterations = 20;

    KeySpec ks = new PBEKeySpec(passphrase.toCharArray());


    SecretKeyFactory skf = SecretKeyFactory.getInstance(algorithm);
    SecretKey key = skf.generateSecret(ks);

    System.arraycopy(source,0,salt,0,8);

    AlgorithmParameterSpec aps = new PBEParameterSpec(salt, iterations);

    Cipher cipher = Cipher.getInstance(algorithm);
    cipher.init(Cipher.DECRYPT_MODE, key, aps);

    byte[] output = cipher.doFinal(source, 8, source.length - 8);

    return output;
  }

  public static void main(String args[]) throws Exception {

    java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE
());

    if (args.length < 1) {
        System.out.println("java PBE <passphrase>");
        System.exit(1);
    }
    String passphrase = args[0];

    String source = "Mary had a little lamb 1234567890";
    byte[] encr = enc(passphrase, source);
    byte[] decr = dec(passphrase, encr);
    System.out.println("\n\ndecrypted:"+new String(decr)+"\n\n");
  }
}




On 5/8/07, Andrew Scott <[EMAIL PROTECTED]> wrote:
>
> Here is java code to do what you want....
>
> As I said, java has the methods already and to write in CF is just plain
> stupid.
>
>
> import java.io.*;
> import java.security.*;
> import java.security.spec.*;
>
> import javax.crypto.*;
> import javax.crypto.spec.*;
>
> public class PBE {
>
>   public static byte[] enc(String passphrase, String source) throws
> Exception {
>
>     String algorithm = "PBEWithMD5AndDES";
>     byte[] salt = new byte[8];
>     int iterations = 20;
>
>     KeySpec ks = new PBEKeySpec(passphrase.toCharArray());
>
>
>     SecretKeyFactory skf = SecretKeyFactory.getInstance(algorithm);
>     SecretKey key = skf.generateSecret(ks);
>
>     MessageDigest md = MessageDigest.getInstance("MD5");
>     md.update(passphrase.getBytes());
>     md.update(source.getBytes ());
>     byte[] digest = md.digest();
>     System.arraycopy(digest,0,salt,0,8);
>
>     AlgorithmParameterSpec aps = new PBEParameterSpec(salt, iterations);
>
>     Cipher cipher = Cipher.getInstance(algorithm);
>     cipher.init(Cipher.ENCRYPT_MODE, key, aps);
>     byte[] output = cipher.doFinal(source.getBytes());
>
>     byte[] result = new byte[8 + output.length];
>     System.arraycopy(salt, 0, result, 0, 8);
>     System.arraycopy(output, 0, result, 8, output.length);
>     return result;
>   }
>
>
>
>
>
> On 5/8/07, Andrew Scott <[EMAIL PROTECTED]> wrote:
> >
> > Well sometimes reinventing the wheel is never the answer.
> >
> > The point is there is already Java code to do what you need, I don't
> > fullt understand you requirements. But if a java programmer has given you
> > information then there is obviously a connection with this already in some
> > way.
> >
> > So maybe creating a webservice as suggested, to look at connecting to
> > this java code as a service would be far better as the code already exists.
> >
> > But I have no idea what your environment is, where each application is
> > on different servers or not so its hard to judge. But you really should look
> > at leveraging exisitng code before rewrting something.
> >
> >
> >
> > On 5/8/07, Christine Davis <[EMAIL PROTECTED] > wrote:
> > >
> > > Dude, I'm sorry I was not clearer.  I'm in an application where I need
> > > to encrypt a piece of data and store it.  When encrypting that data I need
> > > to use a specific salt value and a specific number of iterations, I'm 
> > > trying
> > > to get a better understanding of what a salt value is and how it should be
> > > created.
> > >
> > > In this instance it does not make sense to have the other application
> > > do the work instead of my application.  If it did make sense to do that, 
> > > I'd
> > > delete my application and be done with it
> > >
> > > Thanks!
> > >
> > > Christine Davis
> > > ColdFusion Lead
> > > Nations Technical Services
> > > Prairie Village, KS
> > > 913-748-8044 ext 4703
> > > [EMAIL PROTECTED]
> > >
> > > -----Original Message-----
> > > From: Andrew Scott [mailto:[EMAIL PROTECTED] ]
> > > Sent: Monday, May 07, 2007 11:55 AM
> > > To: CF-Talk
> > > Subject: Re: PBEWithMD5AndDES
> > >
> > > Then go back to your java developer an find out what methods of
> > > communicatuon are open to you, whether it be through a url or
> > > webservices.
> > > Otherwise if it is convenient to you you could bring the java library
> > > down
> > > to you and install it on your server, provided you only use it for
> > > decryption an encryption.
> > >
> > > On 5/8/07, Christine Davis < [EMAIL PROTECTED]> wrote:
> > > >
> > > > Unfortunately, the app where the code is in Java is separate from my
> > >
> > > > application.  I'm trying to communicate with it.  It is not an
> > > application
> > > > on my server.
> > > >
> > > > Christine Davis
> > > > ColdFusion Lead
> > > > Nations Technical Services
> > > > Prairie Village, KS
> > > > 913-748-8044 ext 4703
> > > > [EMAIL PROTECTED]
> > > > -----Original Message-----
> > > > From: Andrew Scott [mailto: [EMAIL PROTECTED] ]
> > > > Sent: Monday, May 07, 2007 11:41 AM
> > > > To: CF-Talk
> > > > Subject: Re: PBEWithMD5AndDES
> > > >
> > > > If the code is already written in Java, why not look at CreateObject
> > > to
> > > > use
> > > > it rather than rewrite it in CF?
> > > >
> > > > On 5/8/07, Christine Davis <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > > Hello everyone,
> > > > >
> > > > >
> > > > >
> > > > > I'm entering the brave new world (for me) of encrypting and
> > > sharing data
> > > > > between a couple of different applications.  We are attempting to
> > > > encrypt a
> > > > > password using PBEWithMD5AndDES.  The Java Developer sent me the
> > > > following
> > > > > information:
> > > > >
> > > > >
> > > > >
> > > > > If cleartext (password) is nations1
> > > > >
> > > > > then PBE encrypted is …÷     ‰Yu5+Tpô?__ E
> > > > >
> > > > > and Base64 encoded is hfcJiVl1NStUcPQ/EBwgRQ== **
> > > > >
> > > > > ** This (Base64) is the value to store in the external_password
> > > field of
> > > > > correspondence_recipient.
> > > > >
> > > > >
> > > > >
> > > > > For the example, we're using C1F9J9V5 for the password and
> > > IVorSalt
> > > > thing
> > > > > and iterations are as follows in Java:
> > > > >
> > > > >
> > > > >
> > > > > byte[] salt = {
> > > > >
> > > > >                    (byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c,
> > > > >
> > > > >                    (byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99
> > > > >
> > > > >                };
> > > > >
> > > > >                int count = 20;
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > We've gotten this far:
> > > > >
> > > > >
> > > > >
> > > > > <cfscript>
> > > > >
> > > > >      theEncrytString = "nations1";
> > > > >
> > > > >      thePassword = "C1F9J9V5";
> > > > >
> > > > >      theMethod = "PBEWithMD5AndDES";
> > > > >
> > > > >      theEncoding = "Base64";
> > > > >
> > > > >      theSalt = "???????";  //WHAT IS THIS???? HOW DO WE DO IT???
> > > > >
> > > > >      theIterations = 20;
> > > > >
> > > > >      test = Encrypt(theEncrytString, thePassword, theMethod,
> > > > theEncoding);
> > > > >
> > > > >      //test = Encrypt(theEncrytString, thePassword, theMethod,
> > > > > theEncoding, theSalt, theIterations);
> > > > >
> > > > > </cfscript>
> > > > >
> > > > > <cfoutput>#test#</cfoutput>
> > > > >
> > > > >
> > > > >
> > > > > Could someone please explain the IVorSalt variable, the Java code
> > > above
> > > > > that generates the salt byte array and what iterations are used
> > > > for?  Also,
> > > > > I believe we need to recreate the Java code in ColdFusion for this
> > > to be
> > > > > shared between the two apps, how do we do that?
> > > > >
> > > > >
> > > > >
> > > > > Thanks!
> > > > >
> > > > > Christine Davis
> > > > > ColdFusion Lead
> > > > > Nations Technical Services
> > > > > Prairie Village, KS
> > > > > 913-748-8044 ext 4703
> > > > > [EMAIL PROTECTED] <blocked::mailto:[EMAIL PROTECTED]
> > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > > 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Create Web Applications With ColdFusion MX7 & Flex 2. 
Build powerful, scalable RIAs. Free Trial
http://www.adobe.com/products/coldfusion/flex2/?sdid=RVJS 

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:277172
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4

Reply via email to