Solved

Looking for an encryption-/decryption-algorithm which produces short output

Posted on 2007-03-19
3
292 Views
Last Modified: 2008-03-04
Hi,

I have to find a symmetric encryption-decryption algorithm, which produces short output-data. I used the following code:

                String ENCRYPTION_ALGORITHM = "PBEWithMD5AndDES";
              String pwd = "password";
              PBEParameterSpec PBE_PARAMETER_SPEC =
                  new PBEParameterSpec(new byte[] { (byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67,
                   (byte)0x89, (byte)0xab, (byte)0xcd, (byte)0xef}, 1024);
              if( pwd != null ) {
                  // yes -> fetch the encryption stream
                  Cipher pbe;
                  try {
                      PBEKeySpec pbeKeySpec = new PBEKeySpec(pwd.toCharArray());
                      SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(
                              ENCRYPTION_ALGORITHM);
                      SecretKey pbeKey = keyFactory.generateSecret(pbeKeySpec);
                      pbe = Cipher.getInstance(ENCRYPTION_ALGORITHM);
                      pbe.init(Cipher.ENCRYPT_MODE, pbeKey, PBE_PARAMETER_SPEC);
                  }
                  catch (Exception e) {
                      throw new PdiRuntimeException(e);
                  }
                  ByteArrayOutputStream bufOut = new ByteArrayOutputStream();
                  bufOut.write("Das wird anders werden".getBytes());
                  CipherOutputStream encrOut =  new CipherOutputStream(bufOut, pbe);
                  String s = new BASE64Encoder().encode( bufOut.toByteArray() );
                  System.out.println( s );
                  
                  bufOut.reset();
                  bufOut.write("419".getBytes());
                  encrOut =  new CipherOutputStream(bufOut, pbe);
                  s = new BASE64Encoder().encode( bufOut.toByteArray() );
                  System.out.println( s );
                  
                  bufOut.reset();
                  bufOut.write("4198721987".getBytes());
                  encrOut =  new CipherOutputStream(bufOut, pbe);
                  s = new BASE64Encoder().encode( bufOut.toByteArray() );
                  System.out.println( s );
              }

and got - as I can see - always the next 2^n-character-length. One might say, that´s o.k., to get out of "4198721987", which is 10 characters, a return-value of 16 characters; but in fact "4198721987" is stored as an integer or long-value, so it is something like 4 characters and shouldn´t return such a long output.

Any hint, where I can find a good algorithm with less waste of bytes?
0
Comment
Question by:spetrowitsch
  • 2
3 Comments
 
LVL 8

Expert Comment

by:mnrz
ID: 18746746
you should not store the output as Integer.
it is wrong,besides, the base 64 encoding will return a string.
0
 

Author Comment

by:spetrowitsch
ID: 18746777
I wanted to say: The value, which I want to encrypt (and later decrypt) is in most cases an integer or long, and shouldn´t result in such long encrypted return-values.
0
 
LVL 8

Accepted Solution

by:
mnrz earned 50 total points
ID: 18746805
ok but each algorithm you use will result unexpected size of characters.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Viewers learn about the “while” loop and how to utilize it correctly in Java. Additionally, viewers begin exploring how to include conditional statements within a while loop and avoid an endless loop. Define While Loop: Basic Example: Explanatio…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now