Solved

noSuchAlgorithmException in jsp subroutine. Why?

Posted on 2007-11-19
3
1,205 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
[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
  • 2
3 Comments
 
LVL 27

Accepted Solution

by:
mrcoffee365 earned 500 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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Getting to know the threat landscape in which DDoS has evolved, and making the right choice to get ourselves geared up to defend against  DDoS attacks effectively. Get the necessary preparation works done and focus on Doing the First Things Right.
This article is in regards to the Cisco QSFP-4SFP10G-CU1M cables, which are designed to uplink/downlink 40GB ports to 10GB SFP ports. I recently experienced this and found very little configuration documentation on how these are supposed to be confi…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…

628 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