CryptoJS v3.1.2实现md5数据加密实例

CryptoJS v3.1.2下载地址: https://code.google.com/p/crypto-js/downloads/list   或  http://www.oschina.net/p/crypto-js/

1、项目结构

2、项目需要导入的jar包

本项目后台用的是struts2,所以需要导入struts2的jar包。把下面的包导入到项目的WebRoot/WEB-INF/lib目录下

3、项目需要导入的js文件

下载CryptoJS v3.1.2后,解压,解压后的文件夹的根目录下有两个目录,其中core-min.js 在components目录下,md5.js在rollups目录下。找到这两个js文件,然后在项目的WebRoot根目录下新建js文件夹,把这两个js文件放在WebRoot/js目录下

4、各个文件的源码

(1) 在src根目录下新建包com.md5.action  , 在该包下建立EncryptAction.java

EncryptAction.java

package com.md5.action;

import com.opensymphony.xwork2.ActionContext;

public class EncryptAction {
	private String userName;
	private String password;

	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

	public String  encryptByMd5() {
		ActionContext context = ActionContext.getContext();
		context.put("userName", this.userName);
		context.put("password", this.password);
		return "success";
	}

}

(2)  在src根目录下新建xml文件struts.xml

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	 <!-- 配置 Struts 2 应用中的常量 -->
	 <constant name="struts.i18n.encoding" value="UTF-8"/> 

	 <package name="md5" extends="struts-default">
	 	<action name="md5Action" class="com.md5.action.EncryptAction" method="encryptByMd5">
			<result name="success">/success.jsp</result>
	 	</action>
	</package>
</struts>

(3) 修改web.xml文件

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <!-- 设置struts 2过滤器 -->
  <filter>
      <filter-name>struts 2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts 2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 设置欢迎页面 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- session超时定义,单位为分钟 -->
  <session-config>
	<session-timeout>30</session-timeout>
  </session-config>

</web-app>

(4) 在WebRoot根目录下建立分别index.jsp 、md5Demo.jsp、success.jsp

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>首页</title>
  </head>
  <body>
    <a href="md5Demo.jsp">去测试md5实例</a>
  </body>
</html>

md5Demo.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>md5加密实例</title>
	<script type="text/javascript" src="js/core-min.js"></script>
	<script type="text/javascript" src="js/md5.js"></script>
	<script  type="text/javascript">
	    //md5加密函数
	    function EncryptByMd5(){
	        //获取表单中的密码文本框的值
	    	var password = document.getElementById("password").value;
	    	//用CryptoJS库的md5加密算法给密码加密
	    	var passwordMd5 = CryptoJS.MD5(password);
	    	//把加密后的密码值重新赋值给表单中的密码
	    	document.getElementById("password").value = passwordMd5;
	    }
	</script>
  </head>
  <body>
  <form action="md5Action" method="post">
  	用户名:<input type="text" name="userName" id="userName" /><br />
  	密  码:<input type="password" name="password" id="password" /><br />
  	<input type="submit" value="提交" onclick="EncryptByMd5()" /><br />
  </form>
  </body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>成功跳转</title>
  </head>
  <body>
  	用户名:<s:property value="#request.userName" /><br />
  	密  码:<s:property value="#request.password" /><br />
  </body>
</html>

完成以上所有的步骤后,把项目发布到服务器,用浏览器访问md5Demo.jsp ,输入用户名、密码后,提交,你会看到密码加密后的数据

提交前(密码输入的是:123456789)

提交后

即把123456789通过md5算法加了密后,就变成了25f9e794323b453885f5181f1b624d0b

说明:
本实例只展示了CryptoJS v3.1.2实现md5数据加密的简单用法。在实际项目中,例如,在用户注册的时候,在密码输入框 用上以上的md5算法,给密码

加密,通过表单提交给后台,后台处理后,就把表单的内容存入到数据库(密码是表单里的属性,加了密的密码也存进数据库)。 用户注册了之后,在登录的时

候,用户输入密码,这时候,只需要给用户输入的该密码也用上以上加密算法,然后再用表单提交给后台,后台就拿着表单中已经加了密的用户输入的密码,跟数

据库中已经加了密的密码匹配验证就行了。 而不是把数据库里的密码先解密,然后再用用户提交的没有加密的密码跟它匹配。 因为md5算法是不可逆的,所以解

密后的数据可能不是原来的数据,而是别的数据,而某一数据通过md5算法加密后的密文是唯一的。所以采有以上方法才是适合的做法。

时间: 2024-10-13 08:42:45

CryptoJS v3.1.2实现md5数据加密实例的相关文章

java MD5数据加密工具类

package com.wetuo.util; import java.security.MessageDigest; /**  * 数据加密工具类  * @author wzp  *  */ public class DataUtil { public static String md5(String str) { StringBuffer buffer = new StringBuffer(); char[] chars = { '0', '1', '2', '3', '4', '5', '

java md5 数据加密

代码如下: import java.util.Scanner; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Solution { public static void main(String[] args) throws NoSuchAlgorithmException { /* Read and save the input String */ S

MD5 摘要算法实例

package com.soufun.com; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * @author WHD data 2015年8月13日 */ public class MD5Test { // MD5 单向加密 public static void main(St

EIGRP MD5认证实例

R1配置: IOU1(config)#interface ethernet 0/0 IOU1(config-if)#ip address 1.1.1.1 255.255.255.0 IOU1(config-if)#exit IOU1(config)#router eigrp 100 IOU1(config-router)#network 1.1.1.0 0.0.0.255 IOU1(config-router)#exit IOU1(config)#key chain R1chain IOU1(c

MD5简单实例

如图当点击按钮时,会先判断是否第一次登陆,如果是第一次登陆登陆则会弹出设置密码的弹窗,若果登陆过则弹出登陆弹窗 其中输入的密码会用MD5加密下 package com.org.demo.wangfeng.demo; import com.org.wangfeng.R; import android.app.Activity; import android.app.AlertDialog; import android.content.SharedPreferences; import andro

asp.net MD5数据加密和解密

#region ========加密======== /// <summary> /// 加密 /// </summary> /// <param name="Text"></param> /// <returns></returns> public static string Encrypt(string Text) { return Encrypt(Text, "Tony"); } ///

android MD5和SHA1加密实例

//找了好久,网上的很多加密结果不对,最后百度加我自己修改成功解决问题 public class MD5 { private static String key = "a6U&1$Ip[Jr/sed]Rfvn=O>Mz+}lXN*%-gLcGD|0"; //MD5加密实例 public static String getMD5(String str) throws NoSuchAlgorithmException { MessageDigest md5 = null; t

iOS开发 - 网络数据安全加密(MD5)

提交用户的隐私数据 一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 用户的隐私数据登录密码银行账号- - 数据安全 仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 常见的加密算法 <code class="hljs tex&q

iOS 数据加密方案

提交用户的隐私数据 一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 用户的隐私数据登录密码银行账号- - 数据安全 仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 常见的加密算法 MD5 \ SHA \ DES \ 3DES \ R