1

簡単なJSPLOGINページを作成しました。暗号化された形式のパスワードを受け取りました。私はそれを解読しています。試してみるために、サンプル文字列を暗号化しているので、バイト配列を16進文字列にエンコードする必要があります。これは、コードの最後のステートメントで実行しようとしています。

<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.security.*" %>
<%@ page import="javax.crypto.*" %>
<%@ page import="javax.crypto.spec.*" %>
<%@ page import="java.lang.*" %>

<HTML>
<HEAD>
<TITLE>Simple JSP/Oracle Query Example</TITLE>
</HEAD>
<BODY>

<%
   Class.forName("oracle.jdbc.OracleDriver");

   Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@xxx:xxxx:xxxx","xxxxxx","xxxxxx");
                        // @//machineName:port:SID,   userid,  password

    Statement st=conn.createStatement();

    ResultSet rs=st.executeQuery("Select * from Cxxxxxxx");

    while(rs.next()){
        String name=rs.getString("user_id");
        String p=rs.getString("password");
        out.println(name+":"+p);
        out.println("</br>");


    String algorithm1 = "DES";//magical mystery constant
    String algorithm2 = "DES/CBC/NoPadding";//magical mystery constant
    IvParameterSpec iv = new IvParameterSpec( new byte [] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } );//magical mystery constant
    Cipher cipher;
    SecretKey key;
    String k="12345abc";
    key = new SecretKeySpec( k.getBytes("UTF-8"), algorithm1 );
    cipher = Cipher.getInstance( algorithm2 );

    String str="test4abc";

    cipher.init( Cipher.ENCRYPT_MODE, key, iv ); //normally you could leave out the IvParameterSpec argument, but not with Oracle

    byte[] bytes=str.getBytes("UTF-8");

    byte[] encrypted = cipher.doFinal( bytes );

    //Problem is in the statement BELOW --->
    String encoded = new String( Hex.encodeHex( encrypted ) );
    }
%>  
</BODY>
</HTML>

私が受け取っているエラーは次のとおりです。

[jsp src:line #:48]
cannot resolve symbol symbol : variable Hex location: class _check1 String encoded = new String( Hex.encodeHex( encrypted ) ); 

ByteArrayをHexaDecimalStringにエンコードするには、このステートメントを実行する方法、またはその他の方法を実行する必要があります。

4

2 に答える 2

2

Hexが意図されている場合はorg.apache.commons.codec.binary.Hex、JSPの上部にそのままインポートする必要があります(または、代わりにインポートすることもできますorg.apache.commons.codec.binary.Hex.encodeHex( encrypted ))。それは間違いなくの中にはありませんjava.lang.*。それが間違っていたとあなたに言った人は誰でも。

また、JSPファイル内にJavaコードを入れないでください。

于 2012-07-10T04:50:33.467 に答える
1

JSPで作業していたとき、私はしばらく前に同様の問題に直面していました。ダウンロードしたらエラーが解消されました

org.apache.commons.codec.binary 1.5 binary 

libフォルダーに配置します。次に、次の方法でその関数にアクセスします。

org.apache.commons.codec.binary.Hex.encodeHex( encrypted ))

これで問題が解決するはずです。

乾杯!

于 2012-07-10T05:40:33.033 に答える