Solved

base64 decoding

Posted on 2004-08-25
18
488 Views
Last Modified: 2012-06-27
I am using the import w3c.tools.codec.Base64Decoder;

to decode a base64 string, the method
new Base64Decoder(base64string).processString() returns a string object I need a byte representation of this data.
Is it correct to assume that we jsut need to call getBytes() at the end?
0
Comment
Question by:inzaghi
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 7
  • 2
  • +1
18 Comments
 
LVL 35

Expert Comment

by:girionis
ID: 11894849
Yes, I would have thought that this is enough.

Regards
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11894851
Yes. YOu must ask for thre correct encoding though
0
 

Author Comment

by:inzaghi
ID: 11897497
Will I still need to do this even if when I open the file for reading the data from as

br = new BufferedReader( new InputStreamReader( f, "UTF-8)) );
String str = br.readLine();
String decode = new Base64Decoder(str.processString();
byte[] b = decode.getBytes();
0
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 

Author Comment

by:inzaghi
ID: 11897502
oops this refers to

>>Yes. YOu must ask for thre correct encoding though
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11897538
Can you remind me how you've *written* the atoms?
0
 

Author Comment

by:inzaghi
ID: 11897583
username + \u241e + encrypteddata

I have tokenized the string based on the u241e
and to get the encypteddata back into byte data I have done the above ( i haven't shown  the full solution above though)
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11897717
>>( i haven't shown  the full solution above though)

Well that's what's confusing me! Can you do so (and repeat what your quesition is ;-))?
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11897723
When i say 'the full solution' i mean the full code for handling that part of the reading back of course
0
 

Author Comment

by:inzaghi
ID: 11897816
br = new BufferedReader( new InputStreamReader( f, "UTF-8)) );
while (str = br.readLine!=null){
 StringTokenizer st = new StringTokenizer(str, " \u241e");
 String user= st.nextToken();
 String base64 = st.nextToken();
String decodedS = new Base64Decoder(base64).processString();
byte[] b = decodedS.getBytes("UTF-8");
}                  }
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11897893
In what way does processString work (i don't know the class)?
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11897930
Forget that - i checked it. No - that call won't do as you originally had an encrypted byte array there, not a String, as far as i can remember
0
 

Author Comment

by:inzaghi
ID: 11907663
sorry 4 the late reply,

I am trying to get the original encrypted byte array.

Originall the byte array was encoded to base64.
I know need to decode it and get the bytes.

Dont understand why the following will not work?
String decodedS = new Base64Decoder(base64).processString();
byte[] b = decodedS.getBytes("UTF-8");

0
 

Author Comment

by:inzaghi
ID: 11907794
The actual string consists
of the username + seperator + encryptedData

The encrypted data is a byte array which has been encoded using base64

I don't understand why
String decodedS = new Base64Decoder(base64).processString();
byte[] b = decodedS.getBytes("UTF-8");


will not work?
0
 
LVL 92

Accepted Solution

by:
objects earned 350 total points
ID: 11907970
you need something more like:

InputStream in = new ByteArrayInputStream(base64.getBytes("UTF-8"));
OutputStream out = new ByteArrayOutputStream();
new Base64Decoder(in, out).process();
in.close();
out.close();
byte[] encrypted = out.toByteArray();


told you life would be simpler if you avoided encoding altogether ;)
0
 

Author Comment

by:inzaghi
ID: 11910815
Thanks objects, but why wont this work

String decodedS = new Base64Decoder(base64).processString();
byte[] b = decodedS.getBytes("UTF-8");
0
 
LVL 86

Assisted Solution

by:CEHJ
CEHJ earned 150 total points
ID: 11910958
>>Thanks objects, but why wont this work

It's just that i'm a bit suspicious of how an array of 'binary' data is going to be handled as a String. It *may* be OK (and we can test it [more later]), but this:

>>byte[] b = decodedS.getBytes("UTF-8");

strikes me as wrong. Isn't what's being decoded at this point the encrypted data? If so, why is it being decrypted as UTF-8? It certainly won't *en*crypt properly in UTF-8. The array should have just been base64'd - nothing else
0
 
LVL 92

Expert Comment

by:objects
ID: 11918379
> Thanks objects, but why wont this work

Cause there is additional encoding involved in converting between byte arrays and Strings which will corrupt your data.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11935221
8-)
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
dao vs facade design patterns 2 68
Java array 10 85
How to fix  socket closed error 11 60
Delete .class files at every compile 4 55
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
Suggested Courses

739 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