1、背景
MD5加密算法java与C#加密结果不一致,而服务商要求是java,所以有了今天的这个需求。
2、操作
下载tomcat、jdk、eclipse
配置环境变量JAVA_HOME
这个环境变量是tomcat需要使用到的
3eclipse 窗口->首选项->server->runtime Env
将tomcat添加进来
4、在eclipse中新建动态web项目
在src下新建servlet
5、
下面展示一些 我的代码是需要返回java MD5加密的结果
。
package com.md5;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Md5EncryText
*/
@WebServlet("/Md5EncryText")
public class Md5EncryText extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String APPID = "123456";
private static final String APPSECRET = "334455667788";
/**
* @see HttpServlet#HttpServlet()
*/
public Md5EncryText() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String requestId = request.getParameter("requestId");
String timestamp = request.getParameter("timestamp");
if(requestId == null ||"".equals(requestId) || timestamp == null ||"".equals(requestId))
{
return;
}
List<String> param = new ArrayList<String>();
param.add(requestId);
param.add(timestamp);
param.add(APPID);
param.add(APPSECRET);
String result = "";
try
{
result = sign(param);
}
catch (Exception e)
{
return;
}
response.getWriter().append(result);
// request.getRequestDispatcher("/WEB-INF/NewFile.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.getRequestDispatcher("/WEB-INF/NewFile.jsp").forward(request, response);
}
private static String sign(List<String> param) throws Exception {
Collections.sort(param);
StringBuilder sb = new StringBuilder();
for (String str : param) {
sb.append(str);
}
try {
String sign = MD5Util.encrypt32(sb.toString());
return sign;
} catch (Exception e) {
throw new Exception("加签异常");
}
}
}
class MD5Util {
/**
* 十六进制
*/
private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
'b', 'c', 'd', 'e', 'f' };
/**
* 对字符串进行MD5加密
* @param text 明文
* @return 密文
*/
public static String encrypt32(String text) {
MessageDigest msgDigest = null;
try {
msgDigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException("System doesn't support MD5 algorithm.");
}
try {
msgDigest.update(text.getBytes("UTF-8")); // 注意改接口是按照指定编码形式签名
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException("System doesn't support your EncodingException.");
}
byte[] bytes = msgDigest.digest();
String md5Str = new String(encodeHex(bytes));
return md5Str.toString();
}
private static char[] encodeHex(byte[] data) {
int l = data.length;
char[] out = new char[l << 1];
// two characters form the hex value.
for (int i = 0, j = 0; i < l; i++) {
out[j++] = DIGITS[(0xF0 & data[i]) >>> 4];
out[j++] = DIGITS[0x0F & data[i]];
}
return out;
}
}
6、选中项目右键导出成war包
7、找到tomocat的webapps目录,把刚才导出的war包放进去。启动tomcat
这里启动tomcat如果需要非dos川口启动,需要
《1、打开cmd窗口
进入到tomcat的bin目录下
然后输入dos命令
service install tomcat的exe文件名,不加扩展名我这里是tomcat9所以
命令为:
service install tomcat9
《2 启动tomcat服务
net start tomcat9
《3 关闭tomcat服务
net stop tomcat9
8、检测:
这里说一下安装jdk、tomcat的检测方式
jdk安装目前的版本都是自动安装jre,所以jre不需要单独安装
jdk安装完成后,需要在环境变量path中添加jdk安装目录的bin目录
这样就可以直接使用bin目录下的可执行文件了比如java 比如javac
重点说一下由于tomcat的需要所以需要 把jdk的安装目录放进JAVA_HOME中,不让tomcat的bin目录下的startup.bat文件点击后闪退。如果出现这种情况:请使用cmd进入到tomcat的斌目录下,输入startup.bat执行,查看报错结果
tomcat启动后,如果端口没占用的情况下:可以在本地浏览器中输入:
localhost:8080进行访问,如果8080端口被占用可以在tomcat的conf目录下找到server.xml ,打开后将8080修改为需要的端口
我这里直接访问servlet使用:
http://localhost:8080/JavaMD5/Md5EncryText?requestId=33333333333333333×tamp=12341242353
即可访问
9注意事项:
我tomcat部署在外网不可连接的局域网中,所以没有进行安全校验,如果在网络环境中请对访问进行安全校验。
如果局域网中访问该网址,需要在防火墙中添加该端口的入站规则