- 浏览: 747382 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
任楚娴:
你好,请问html = nvl(html); 这句中的nvl( ...
java html串转换成文本串 -
u013246812:
,谢拉!
jQuery ui Dialog 讲解参数 -
大宝剑99:
...
前端优化
首先,生成一个密钥KEY。
我把它保存到key.txt中。这个文件就象是一把钥匙。谁拥有它,谁就能解开我们的类文件。代码参考如下:
import java.io.File;
import java.io.FileOutputStream;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
class Key {
private String keyName;
public Key(String keyName) {
this.keyName = keyName;
}
public void createKey(String keyName) throws Exception {
// 创建一个可信任的随机数源,DES算法需要
SecureRandom sr = new SecureRandom();
// 用DES算法创建一个KeyGenerator对象
KeyGenerator kg = KeyGenerator.getInstance("DES");
// 初始化此密钥生成器,使其具有确定的密钥长度
kg.init(sr);
// 生成密匙
SecretKey key = kg.generateKey();
// 获取密钥数据
byte rawKeyData[] = key.getEncoded();
// 将获取到密钥数据保存到文件中,待解密时使用
FileOutputStream fo = new FileOutputStream(new File(keyName));
fo.write(rawKeyData);
}
public static void main(String args[]) {
try {
new Key("key.txt");
} catch (Exception e) {
e.printStackTrace();
}
}
}
======================
第二步,对我们所要进行加密的类文件进行加密。
比如我有一个DigestPass类,
已经被正常编译好生成DigestPass.class文件。
此时,这个类文件是任何人都可以用的。因为系统的类加载器可以自动的加载它。
那么下一步,我们要做的就是把这个类文件加密。使系统的类加载器无法读取到正确的字节码文件。参考代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class JiaMi {
public static void main(String[] args) throws Exception {
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 获得密匙数据
FileInputStream fi = new FileInputStream(new File("key.txt"));
byte rawKeyData[] = new byte[fi.available()];
fi.read(rawKeyData);
fi.close();
// 从原始密匙数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(rawKeyData);
// 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance("DES");
// 用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, key, sr);
// 现在,获取要加密的文件数据
FileInputStream fi2 = new FileInputStream(new File("DigestPass.class"));
byte data[] = new byte[fi2.available()];
fi2.read(data);
fi2.close();
// 正式执行加密操作
byte encryptedData[] = cipher.doFinal(data);
// 用加密后的数据覆盖原文件
FileOutputStream fo = new FileOutputStream(new File("DigestPass.class"));
fo.write(encryptedData);
fo.close();
}
}
=====================
解密:
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 获得密匙数据
FileInputStream fi = new FileInputStream(new File("key.txt"));
byte rawKeyData[] = new byte[fi.available()];// = new byte[5];
fi.read(rawKeyData);
fi.close();
// 从原始密匙数据创建一个DESKeySpec对象
DESKeySpec dks = new DESKeySpec(rawKeyData);
// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成一个SecretKey对象
SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(dks);
// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance("DES");
// 用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, key, sr);
// 现在,获取数据并解密
FileInputStream fi2 = new FileInputStream(new File("DigestPass.class"));
byte encryptedData[] = new byte[fi2.available()];
fi2.read(encryptedData);
fi2.close();
// 正式执行解密操作
byte decryptedData[] = cipher.doFinal(encryptedData);
==========================
private static final String HEX_NUMS_STR="0123456789ABCDEF";
private static final Integer SALT_LENGTH = 12;
/**
* 将16进制字符串转换成字节数组
* @param hex
* @return
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] hexChars = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (HEX_NUMS_STR.indexOf(hexChars[pos]) << 4
| HEX_NUMS_STR.indexOf(hexChars[pos + 1]));
}
return result;
}
/**
* 将指定byte数组转换成16进制字符串
* @param b
* @return
*/
public static String byteToHexString(byte[] b) {
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
hexString.append(hex.toUpperCase());
}
return hexString.toString();
}
==================
/**
* 加密解密类
*/
public class Eryptogram
{
private static String Algorithm ="DES";
private String key="CB7A92E3D3491964";
//定义 加密算法,可用 DES,DESede,Blowfish
static boolean debug = false ;
/**
* 构造子注解.
*/
public Eryptogram ()
{
} /**
* 生成密钥
* @return byte[] 返回生成的密钥
* @throws exception 扔出异常.
*/
public static byte [] getSecretKey () throws Exception
{
KeyGenerator keygen = KeyGenerator.getInstance (Algorithm );
SecretKey deskey = keygen.generateKey ();
System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));
if (debug ) System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));
return deskey.getEncoded ();
} /**
* 将指定的数据根据提供的密钥进行加密
* @param input 需要加密的数据
* @param key 密钥
* @return byte[] 加密后的数据
* @throws Exception
*/
public static byte [] encryptData (byte [] input ,byte [] key ) throws Exception
{
SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
if (debug )
{
System.out.println ("加密前的二进串:"+byte2hex (input ));
System.out.println ("加密前的字符串:"+new String (input ));
} Cipher c1 = Cipher.getInstance (Algorithm );
c1.init (Cipher.ENCRYPT_MODE ,deskey );
byte [] cipherByte =c1.doFinal (input );
if (debug ) System.out.println ("加密后的二进串:"+byte2hex (cipherByte ));
return cipherByte ;
} /**
* 将给定的已加密的数据通过指定的密钥进行解密
* @param input 待解密的数据
* @param key 密钥
* @return byte[] 解密后的数据
* @throws Exception
*/
public static byte [] decryptData (byte [] input ,byte [] key ) throws Exception
{
SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
if (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));
Cipher c1 = Cipher.getInstance (Algorithm );
c1.init (Cipher.DECRYPT_MODE ,deskey );
byte [] clearByte =c1.doFinal (input );
if (debug )
{
System.out.println ("解密后的二进串:"+byte2hex (clearByte ));
System.out.println ("解密后的字符串:"+(new String (clearByte )));
} return clearByte ;
} /**
* 字节码转换成16进制字符串
* @param byte[] b 输入要转换的字节码
* @return String 返回转换后的16进制字符串
*/
public static String byte2hex (byte [] b )
{
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 ;
if (n <b.length -1 ) hs =hs +":";
} return hs.toUpperCase ();
}
/**
* 字符串转成字节数组.
* @param hex 要转化的字符串.
* @return byte[] 返回转化后的字符串.
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}
private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
/**
* 字节数组转成字符串.
* @param String 要转化的字符串.
* @return 返回转化后的字节数组.
*/
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
/**
* 从数据库中获取密钥.
* @param deptid 企业id.
* @return 要返回的字节数组.
* @throws Exception 可能抛出的异常.
*/
public static byte[] getSecretKey(long deptid) throws Exception {
byte[] key=null;
String value=null;
//CommDao dao=new CommDao();
// List list=dao.getRecordList("from Key k where k.deptid="+deptid);
//if(list.size()>0){
//value=((com.csc.sale.bean.Key)list.get(0)).getKey();
value = "CB7A92E3D3491964";
key=hexStringToByte(value);
//}
if (debug)
System.out.println("密钥:" + value);
return key;
}
public String encryptData2(String data) {
String en = null;
try {
byte[] key=hexStringToByte(this.key);
en = bytesToHexString(encryptData(data.getBytes(),key));
} catch (Exception e) {
e.printStackTrace();
}
return en;
}
public String decryptData2(String data) {
String de = null;
try {
byte[] key=hexStringToByte(this.key);
de = new String(decryptData(hexStringToByte(data),key));
} catch (Exception e) {
e.printStackTrace();
}
return de;
}
}
加密使用:
byte[] key=Eryptogram.getSecretKey(deptid); //获得钥匙(字节数组)
byte[] tmp=Eryptogram.encryptData(password.getBytes(), key); //传入密码和钥匙,获得加密后的字节数组的密码
password=Eryptogram.bytesToHexString(tmp); //将字节数组转化为字符串,获得加密后的字符串密码
解密与之差不多
===============
异或操作
static byte[] crypt(byte[] data){
for(int i=8;i<data.length;i++){
data[i] ^= ox5a;
}
return data;
}
//不可逆
static byte[] encryptSHA(byte[] data){
MessageDigest sha = MessageDigest.getInstance("SHA");
sha.update(data);
return sha.digest();
}
我把它保存到key.txt中。这个文件就象是一把钥匙。谁拥有它,谁就能解开我们的类文件。代码参考如下:
import java.io.File;
import java.io.FileOutputStream;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
class Key {
private String keyName;
public Key(String keyName) {
this.keyName = keyName;
}
public void createKey(String keyName) throws Exception {
// 创建一个可信任的随机数源,DES算法需要
SecureRandom sr = new SecureRandom();
// 用DES算法创建一个KeyGenerator对象
KeyGenerator kg = KeyGenerator.getInstance("DES");
// 初始化此密钥生成器,使其具有确定的密钥长度
kg.init(sr);
// 生成密匙
SecretKey key = kg.generateKey();
// 获取密钥数据
byte rawKeyData[] = key.getEncoded();
// 将获取到密钥数据保存到文件中,待解密时使用
FileOutputStream fo = new FileOutputStream(new File(keyName));
fo.write(rawKeyData);
}
public static void main(String args[]) {
try {
new Key("key.txt");
} catch (Exception e) {
e.printStackTrace();
}
}
}
======================
第二步,对我们所要进行加密的类文件进行加密。
比如我有一个DigestPass类,
已经被正常编译好生成DigestPass.class文件。
此时,这个类文件是任何人都可以用的。因为系统的类加载器可以自动的加载它。
那么下一步,我们要做的就是把这个类文件加密。使系统的类加载器无法读取到正确的字节码文件。参考代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class JiaMi {
public static void main(String[] args) throws Exception {
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 获得密匙数据
FileInputStream fi = new FileInputStream(new File("key.txt"));
byte rawKeyData[] = new byte[fi.available()];
fi.read(rawKeyData);
fi.close();
// 从原始密匙数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(rawKeyData);
// 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance("DES");
// 用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, key, sr);
// 现在,获取要加密的文件数据
FileInputStream fi2 = new FileInputStream(new File("DigestPass.class"));
byte data[] = new byte[fi2.available()];
fi2.read(data);
fi2.close();
// 正式执行加密操作
byte encryptedData[] = cipher.doFinal(data);
// 用加密后的数据覆盖原文件
FileOutputStream fo = new FileOutputStream(new File("DigestPass.class"));
fo.write(encryptedData);
fo.close();
}
}
=====================
解密:
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 获得密匙数据
FileInputStream fi = new FileInputStream(new File("key.txt"));
byte rawKeyData[] = new byte[fi.available()];// = new byte[5];
fi.read(rawKeyData);
fi.close();
// 从原始密匙数据创建一个DESKeySpec对象
DESKeySpec dks = new DESKeySpec(rawKeyData);
// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成一个SecretKey对象
SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(dks);
// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance("DES");
// 用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, key, sr);
// 现在,获取数据并解密
FileInputStream fi2 = new FileInputStream(new File("DigestPass.class"));
byte encryptedData[] = new byte[fi2.available()];
fi2.read(encryptedData);
fi2.close();
// 正式执行解密操作
byte decryptedData[] = cipher.doFinal(encryptedData);
==========================
private static final String HEX_NUMS_STR="0123456789ABCDEF";
private static final Integer SALT_LENGTH = 12;
/**
* 将16进制字符串转换成字节数组
* @param hex
* @return
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] hexChars = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (HEX_NUMS_STR.indexOf(hexChars[pos]) << 4
| HEX_NUMS_STR.indexOf(hexChars[pos + 1]));
}
return result;
}
/**
* 将指定byte数组转换成16进制字符串
* @param b
* @return
*/
public static String byteToHexString(byte[] b) {
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
hexString.append(hex.toUpperCase());
}
return hexString.toString();
}
==================
/**
* 加密解密类
*/
public class Eryptogram
{
private static String Algorithm ="DES";
private String key="CB7A92E3D3491964";
//定义 加密算法,可用 DES,DESede,Blowfish
static boolean debug = false ;
/**
* 构造子注解.
*/
public Eryptogram ()
{
} /**
* 生成密钥
* @return byte[] 返回生成的密钥
* @throws exception 扔出异常.
*/
public static byte [] getSecretKey () throws Exception
{
KeyGenerator keygen = KeyGenerator.getInstance (Algorithm );
SecretKey deskey = keygen.generateKey ();
System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));
if (debug ) System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));
return deskey.getEncoded ();
} /**
* 将指定的数据根据提供的密钥进行加密
* @param input 需要加密的数据
* @param key 密钥
* @return byte[] 加密后的数据
* @throws Exception
*/
public static byte [] encryptData (byte [] input ,byte [] key ) throws Exception
{
SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
if (debug )
{
System.out.println ("加密前的二进串:"+byte2hex (input ));
System.out.println ("加密前的字符串:"+new String (input ));
} Cipher c1 = Cipher.getInstance (Algorithm );
c1.init (Cipher.ENCRYPT_MODE ,deskey );
byte [] cipherByte =c1.doFinal (input );
if (debug ) System.out.println ("加密后的二进串:"+byte2hex (cipherByte ));
return cipherByte ;
} /**
* 将给定的已加密的数据通过指定的密钥进行解密
* @param input 待解密的数据
* @param key 密钥
* @return byte[] 解密后的数据
* @throws Exception
*/
public static byte [] decryptData (byte [] input ,byte [] key ) throws Exception
{
SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
if (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));
Cipher c1 = Cipher.getInstance (Algorithm );
c1.init (Cipher.DECRYPT_MODE ,deskey );
byte [] clearByte =c1.doFinal (input );
if (debug )
{
System.out.println ("解密后的二进串:"+byte2hex (clearByte ));
System.out.println ("解密后的字符串:"+(new String (clearByte )));
} return clearByte ;
} /**
* 字节码转换成16进制字符串
* @param byte[] b 输入要转换的字节码
* @return String 返回转换后的16进制字符串
*/
public static String byte2hex (byte [] b )
{
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 ;
if (n <b.length -1 ) hs =hs +":";
} return hs.toUpperCase ();
}
/**
* 字符串转成字节数组.
* @param hex 要转化的字符串.
* @return byte[] 返回转化后的字符串.
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}
private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
/**
* 字节数组转成字符串.
* @param String 要转化的字符串.
* @return 返回转化后的字节数组.
*/
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
/**
* 从数据库中获取密钥.
* @param deptid 企业id.
* @return 要返回的字节数组.
* @throws Exception 可能抛出的异常.
*/
public static byte[] getSecretKey(long deptid) throws Exception {
byte[] key=null;
String value=null;
//CommDao dao=new CommDao();
// List list=dao.getRecordList("from Key k where k.deptid="+deptid);
//if(list.size()>0){
//value=((com.csc.sale.bean.Key)list.get(0)).getKey();
value = "CB7A92E3D3491964";
key=hexStringToByte(value);
//}
if (debug)
System.out.println("密钥:" + value);
return key;
}
public String encryptData2(String data) {
String en = null;
try {
byte[] key=hexStringToByte(this.key);
en = bytesToHexString(encryptData(data.getBytes(),key));
} catch (Exception e) {
e.printStackTrace();
}
return en;
}
public String decryptData2(String data) {
String de = null;
try {
byte[] key=hexStringToByte(this.key);
de = new String(decryptData(hexStringToByte(data),key));
} catch (Exception e) {
e.printStackTrace();
}
return de;
}
}
加密使用:
byte[] key=Eryptogram.getSecretKey(deptid); //获得钥匙(字节数组)
byte[] tmp=Eryptogram.encryptData(password.getBytes(), key); //传入密码和钥匙,获得加密后的字节数组的密码
password=Eryptogram.bytesToHexString(tmp); //将字节数组转化为字符串,获得加密后的字符串密码
解密与之差不多
===============
异或操作
static byte[] crypt(byte[] data){
for(int i=8;i<data.length;i++){
data[i] ^= ox5a;
}
return data;
}
//不可逆
static byte[] encryptSHA(byte[] data){
MessageDigest sha = MessageDigest.getInstance("SHA");
sha.update(data);
return sha.digest();
}
发表评论
-
全国最新行政区划代码(Tree)json数据以及地理数据
2020-11-11 21:23 381基于阿里提供的地理数据 http://datav.aliyun ... -
小知识点--解锁 AppChecker ping ip
2019-06-19 08:40 442在使用AppChecker 进行主动拨测的时候,目 ... -
记录年会小系统
2018-02-04 14:42 1143有点意思,年会过后,抽奖活动saas小系统扒光看看:支持P ... -
jdbc方式以 sys账号连接oracle数据的问题
2017-08-22 10:44 484多年以后,在操作oracle 时 发现 jdbc 连 ... -
proguard 代码混淆
2016-11-22 10:59 691url:http://proguard.sourceforg ... -
solr 表达式意义
2015-02-03 19:29 7781. “:”指定字段查指定值,如返回所有值*:* 2. “? ... -
solr 安装配置
2015-02-03 13:15 746solr 安装配置步骤: 1 首先下载solr(最新 ... -
javax.net.ssl.SSLKeyException: RSA premaster secre临时解决方案
2014-11-25 19:38 4420javax.net.ssl.SSLKeyException ... -
compass 小知识点
2014-09-15 10:22 938今天发现排序不管事, 查了一下:索引的问题:排序的列不进 ... -
java_opts 常用
2014-08-14 13:16 1220JVM设置,可以查考如下配置example:# Memory ... -
RPC Socket 服务调用模型
2014-04-09 16:14 600最近在看Dubbo 服务框架, 通过RPC 实现了输入和 ... -
JVM 基本参数
2014-04-03 11:49 786基本的JVM参数:-classpath, -cp: 设置类搜 ... -
eclipse 快捷键失效解决方法
2014-01-17 17:20 721有时候eclispe快捷键失效了,编码起来太难受了。 ... -
Compass+ lucene 通用代码(脱离数据库)
2013-11-08 15:09 920最近需要通过检索分类的方式进行处理,所以就写了接口与实 ... -
DEBUG远程tomcat
2013-08-21 13:35 1002一、在windows系统中:打开%CATALINE_H ... -
自动获取网页内容,然后写入excel文档中
2013-07-05 15:22 3450今天需要将北京物业公司名称以及电话给整理出来,发现爱帮 ... -
继续学习jersey+spring 构建RESTful风格 webservice
2013-03-13 10:36 3461j先说一下springmvc rest风格 spring ... -
尽量少使用jaxb 进行xml与对象互换
2013-03-09 17:33 1354尽量少使用jaxb 进行xml与对象互换 问题不少,这个好 ... -
Cookie path的设置
2013-02-21 10:58 1951cookie path 设置 IE对如下的co ... -
http 相关知识点
2012-10-11 10:49 1062Host头域 Host头域指定请求资源的Intenet主机和 ...
相关推荐
Java加密解密工具是开发过程中不可或缺的部分,尤其是在处理敏感数据时,确保数据的安全性至关重要。在Java中,我们可以使用各种库和内置API来实现加密和解密操作。本篇文章将深入探讨Java加密解密的核心概念、常用...
Java加密解密工具包,通常用于保护敏感数据的安全,防止未经授权的访问或篡改。这个名为"JCT"的工具包提供了丰富的功能,使得开发者在Java应用中集成加密和解密操作变得更加简单。下面我们将详细探讨Java加密的相关...
Java加密解密技术在软件开发中扮演着至关重要的角色,特别是在数据安全领域。3DES(Triple Data Encryption Standard)是一种常见的加密算法,它基于DES(Data Encryption Standard)并对其进行了加强,提高了安全性...
总结来说,实现“java加密解密zip压缩包”项目,你需要理解Java的IO流、加密API以及如何结合使用这些工具来创建和读取加密的ZIP文件。同时,了解AS3的加密和ZIP处理机制,以便在需要的时候在AS3环境中解密这些文件。...
### 加密解密概述 #### 加密的应用 加密技术是信息安全的核心技术之一,它的主要作用是保护数据不被未授权的用户所读取。具体来说,加密是使用一种算法对明文数据进行转换,使其变为密文,这一过程称为加密...
一段java语言加密和解密的代码
Java加密解密程序是软件开发中的一个重要领域,主要用于保护数据的安全性和隐私性。在这个特定的案例中,我们讨论的是一个基于MyEclipse开发的Java应用程序,它实现了凯撒加密法,这是一种古老但基础的加密技术。...
1. **Java加密解密**:Java提供了丰富的库,如Java Cryptography Extension (JCE),用于实现各种加密和解密算法,如AES(高级加密标准)、DES(数据加密标准)、RSA(公钥加密算法)等。这些算法可以用于对数据进行...
Java加密解密是信息安全领域中的一个关键话题,特别是在软件开发中,它对于保护敏感数据、实现安全通信至关重要。Java提供了一系列强大的加密库和API,使得开发者可以方便地进行数据加密和解密操作。本项目提供的...
### Java加密解密算法详解 #### 一、加密概述与应用 加密技术是信息安全领域中的关键技术之一,其核心在于通过特定算法对原始信息(明文)进行变换,使其成为不可直接阅读的形式(密文),从而保护信息在传输或...
首先,标题"JAVA加密解密"表明我们将关注Java语言中用于保护数据隐私和安全的加密算法。Java提供了多种加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),这些库支持对称加密...
本教程"JAVA加密解密-3"聚焦于如何在Java环境中实现文件的加密和解密功能。以下是一些核心知识点: 1. **加密的基本概念**:加密是将明文数据转化为不可读的密文,以防止未经授权的访问。解密则是将密文还原为原始...
Java加密解密是信息安全领域的重要组成部分,用于保护数据的安全性和隐私。在Java中,我们可以使用多种加密算法来实现数据的加密和解密。本篇将详细介绍几种常见的加密算法及其在Java中的应用,包括DES、RSA以及非...
java加密和解密的方法,利用指定的密钥,可逆的。密钥必须16位。
### Java加密解密方法大全:深入解析 #### 加密概述及其重要性 在当今数字化时代,信息安全成为企业和个人关注的焦点。加密技术作为保障数据安全的关键手段,其重要性不言而喻。加密,实质上是一种通过特殊算法...
java 加密 解密 jar security,助你有效安全开发系统 java 加密 解密 jar security,助你有效安全开发系统
Java 作为一种广泛使用的编程语言,在处理敏感数据时提供了多种加密解密手段来确保信息安全。本文将深入探讨 Java 中实现加密解密的核心概念和技术细节。 #### 二、Java 加密解密基础知识 ##### 2.1 加密算法类型 ...
### Java加密解密小程序知识点详解 #### 一、程序概述 本程序是一个基于Java Swing的图形用户界面(GUI)加密解密工具。它允许用户在窗口中输入明文信息,并通过点击“加密”按钮实现对信息的加密处理;加密后的...