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 robust enterprise, web RIAs.
Upgrade & integrate Adobe Coldfusion MX7 with Flex 2
http://www.adobe.com/products/coldfusion/flex2/?sdid=RVJP

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

Reply via email to