Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

noSuchAlgorithmException in jsp subroutine. Why?

Posted on 2007-11-19
3
Medium Priority
?
1,233 Views
Last Modified: 2012-06-22
I am trying to make a routine that encrypts. I found some code that works. When I put the following in-line in my jsp page, it works fine:

     String pw = "mypassword";
     java.security.MessageDigest d =null;
     d = java.security.MessageDigest.getInstance("SHA-1");
     d.reset();
     d.update(pw.getBytes());

However, I want to make it a function I can call. I've done this before by including code, but this time I'm having trouble. In my main jsp page I have:

<%@ include file="include/crypt.inc"%>

and in include/crypt.inc I have:

<%!
private byte[] pwCrypt(String pw)
{
     java.security.MessageDigest d =null;
     d = java.security.MessageDigest.getInstance("SHA-1");
     d.reset();
     d.update(pw.getBytes());
     return  d.digest();
}
%>

However, when I attempt to load the jsp page I get the following error, even if I don't try to call pwCrypt():

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 5 in the jsp file: /include/crypt.inc
Unhandled exception type NoSuchAlgorithmException
2: private byte[] pwCrypt(String pw)
3: {
4:      java.security.MessageDigest d =null;
5:      d = java.security.MessageDigest.getInstance("SHA-1");
6:      d.reset();
7:      d.update(pw.getBytes());
8:      return  d.digest();

What am I doing wrong?
0
Comment
Question by:jmarkfoley
  • 2
3 Comments
 
LVL 27

Accepted Solution

by:
mrcoffee365 earned 2000 total points
ID: 20317143
You have to put a try/catch block to catch the NoSuchAlgorithmException, or you have to throw it from your subroutine.

See  the API doc here:
http://java.sun.com/javase/6/docs/api/index.html?java/security/package-tree.html
0
 
LVL 1

Author Comment

by:jmarkfoley
ID: 20317310
Getting closer. Now it is telling me that I must return a result of type byte[], but the class def. for digest() says it is type byte[]. In my code (see above) I do:

return  d.digest();

so what's up now?


org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 2 in the jsp file: /include/crypt.inc
This method must return a result of type byte[]
1: <%!
2: private byte[] pwCrypt(String pw)
3: {
4:     try {
5:            java.security.MessageDigest d =null;

0
 
LVL 1

Author Comment

by:jmarkfoley
ID: 20317336
never mind. I moved the 'return' outside the try/catch block and it works now. Thanks. Here is the final code:

<%!
private byte[] pwCrypt(String pw)
{
    java.security.MessageDigest d =null;

    try {
        d = java.security.MessageDigest.getInstance("SHA-1");
        d.reset();
        d.update(pw.getBytes());
    }
    catch (Exception e){
      e.printStackTrace();
    }

    return  d.digest();
}
%>
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

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

This article will show you step-by-step instructions to build your own NTP CentOS server.  The network diagram shows the best practice to setup the NTP server farm for redundancy.  This article also serves as your NTP server documentation.
The decision to migrate to the cloud is not a simple one—many factors, such a cost, ease of use, and ongoing maintenance come into play. The goal is always for cloud platforms to make storage and backups more seamless and effective. Here’s a look at…
This Micro Tutorial will teach you how to add a cinematic look to any film or video out there. There are very few simple steps that you will follow to do so. This will be demonstrated using Adobe Premiere Pro CS6.
Whether it be Exchange Server Crash Issues, Dirty Shutdown Errors or Failed to mount error, Stellar Phoenix Mailbox Exchange Recovery has always got your back. With the help of its easy to understand user interface and 3 simple steps recovery proced…
Suggested Courses

877 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