Преобразовать массив байтов в десятичную строку гекса
Я написал простую страницу входа в систему JSP. Я получил пароль в зашифрованном виде. Я расшифровываю это. Так что просто для того, чтобы попробовать, я шифрую образец строки, поэтому он должен затем закодировать байтовый массив в шестнадцатеричную строку, что я пытаюсь сделать в последнем утверждении моего кода.
<%@ 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 в HexaDecimal String
2 ответа
Я столкнулся с подобной проблемой некоторое время назад, когда я работал с JSP. Ошибка была решена загрузкой
org.apache.commons.codec.binary 1.5 binary
и поместив его в папку lib. Затем доступ к этой функции с помощью:
org.apache.commons.codec.binary.Hex.encodeHex( encrypted ))
Это должно решить вашу проблему.
Ура!
Если Hex
должен быть org.apache.commons.codec.binary.Hex
Затем вам нужно импортировать его как таковой в верхней части вашего JSP (или поочередно вы можете сделать org.apache.commons.codec.binary.Hex.encodeHex( encrypted )
). Это определенно не внутри java.lang.*
, Тот, кто сказал тебе, что это неправильно.
Также, пожалуйста, пожалуйста, пожалуйста, не помещайте Java-код в файлы JSP.