my mi
来源:互联网 发布:tensorflow 英文官网 编辑:程序博客网 时间:2024/04/30 11:57
package com.changertech.struts;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
public class Arithmetic {
static Key key;
/**
* 根据参数生成KEY
*
* @param strKey
*/
public static void getKey(String strKey) {
try {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom(strKey.getBytes()));
key = _generator.generateKey();
_generator = null;
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 加密String明文输入,String密文输出
*
* @param strMing
* @return
*/
public static String getEncString(String strMing) {
String strMi = "";
try {
return byte2hex(getEncCode(strMing.getBytes()));
} catch (Exception e) {
e.printStackTrace();
}
return strMi;
}
/**
* 解密 以String密文输入,String明文输出
*
* @param strMi
* @return
*/
public static String getDesString(String strMi) {
String strMing = "";
try {
return new String(getDesCode(hex2byte(strMi.getBytes())));
} catch (Exception e) {
e.printStackTrace();
}
return strMing;
}
/**
* 加密以byte[]明文输入,byte[]密文输出
*
* @param byteS
* @return
*/
private static byte[] getEncCode(byte[] byteS) {
byte[] byteFina = null;
Cipher cipher;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
/**
* 解密以byte[]密文输入,以byte[]明文输出
*
* @param byteD
* @return
*/
private static byte[] getDesCode(byte[] byteD) {
Cipher cipher;
byte[] byteFina = null;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byteFina = cipher.doFinal(byteD);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
/**
* 二行制转字符串
*
* @param b
* @return
*/
public static String byte2hex(byte[] b) { // 一个字节的数,
// 转成16进制字符串
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
// 整数转成十六进制表示
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs.toUpperCase(); // 转成大写
}
public static byte[] hex2byte(byte[] b) {
if ((b.length % 2) != 0)
throw new IllegalArgumentException("长度不是偶数");
byte[] b2 = new byte[b.length / 2];
for (int n = 0; n < b.length; n += 2) {
String item = new String(b, n, 2);
// 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节
b2[n / 2] = (byte) Integer.parseInt(item, 16);
}
return b2;
}
public static void main(String[] args) {
Arithmetic des = new Arithmetic();// 实例化一个对像
des.getKey("aadd");// 生成密匙
String strEnc = des.getEncString("樊振华");// 加密字符串,返回String的密文
System.out.println(strEnc);
String strDes = des.getDesString(strEnc);// 把String 类型的密文解密
System.out.println(strDes);
}
}
------------------------
response.setContentType("text/html;charset=utf-8");
Arithmetic des =new Arithmetic();
des.getKey("Kiss");// 生成密匙
String strEnc = des.getEncString(Math.round(Math.random()*8999+1000)+"10000000010505110214");// 加密字符串,返回String的密文
System.out.println(strEnc);
String strDes = des.getDesString(strEnc);// 把String 类型的密文解密
System.out.println(strDes);
try {
response.sendRedirect("url.jsp?i="+strEnc);
} catch (IOException e) {
e.printStackTrace();
}
return null;
---------------------------
String i = request.getParameter("i");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>go</title>
</head>
<body>
<form action="showUrl.do" name="form1" method="post">
<input name="i" type="hidden" value="<%=i %>">
</form>
<script language="javascript">
document.form1.submit();
</script>
</body>
-------------------------------
response.setContentType("text/html;charset=utf-8");
String strEnc = request.getParameter("i");
Arithmetic des =new Arithmetic();
des.getKey("Kiss");// 生成密匙
String strDes = des.getDesString(strEnc);// 把String 类型的密文解密
String questionID = strDes.substring(0,10);
String sid = strDes.substring(10, strDes.length());
System.out.println("questionID="+questionID);
System.out.println("sid="+sid);
return null;
- my mi
- mi
- mi wen
- MI Report
- MI grid判断表达式
- 多重继承MI
- Hello mi-one
- Algorithm class from MI
- MI共识和方案
- MI ONES 刷机
- MI 3 debug
- Mi one修改hosts
- Mi Ni DVD系统
- MES - 工序MI查看
- mi输入法添加
- mi bionic编译flow
- 500mi的原则
- 500mi收银机
- 如何构建有效的企业级SOA治理
- 软件项目版本号的命名规则及格式
- vi 编辑器
- struts2 配置文件 struts.xml
- c# winform TreeView与ListView的项互相拖动的应用
- my mi
- Sysobjects表
- HttpModule防sql注入
- 网上看到的 asp.net 一般处理程序(.ashx)
- BREW
- C#导出到Excel,读写操作
- 移动及嵌入式报告
- C# 插值放大图形
- Unable to initialize TldLocationsCache