当前位置:首页 » 编程语言 » java加密库

java加密库

发布时间: 2022-04-11 03:16:16

java加密解密代码

package com.cube.limail.util;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;/**
* 加密解密类
*/
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 =new CommDao();
// List list=.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); //将字节数组转化为字符串,获得加密后的字符串密码解密与之差不多

Ⅱ 用java实现对数据库文件的加密

自己编写一个加密算法,或者在网上找一个MD5的加密算法,把密码加密后再存入数据库,取的时候解密下就可以了

Ⅲ java web 项目关于数据库加密问题!请高手解答

这个有几个思路:
一个是本身项目文件应该有访问权限限制,生产环境的系统不应让开发人员可以察看,开发环境和生产环境应分开。

如果不能分开,还有个方法是用J2EE服务器容器提供数据库Datasource,应用程序直接从web容器获取,不需要提供用户名密码。

还有一个方法,配置数据库服务器限制用户只能从Web容器IP连接,这样甚至可以不需要密码。

Ⅳ Java中怎么把密码加密!

MD5很简单,有专门的类,自己定义一个加密用的saltKey。
还有自己写简单的加密解密可以用异或算法,一个字符串于某字符异或就加密了,再与这个字符异或又解密了。很简单的算法。不过比较容易破解

Ⅳ java 对数据库properties文件加密

可以通过其它方法来实现:
1:如果没用框架,直接加密、解密即可
2:如果用hibernate之类,可以绕过Configuration,读取Hibernate配置文件解密后再连接数据库
3:考虑集群影响

Ⅵ 如何用java对数据加密,生成的密文是唯一的

用户提供的是明文,数据库里面存储的是密文
不管怎么样,加密也好,解密也好,如果要比较相等性,这两个过程肯定要有一个,这个是没有选择的,需要提高性能的话只能做两点:
1、将用户的明文加密为密文后再与数据库中的比较,原因是这样只加密一次就可以,如果解密的话就要把数据库的密文全部解密,这是不现实的
2、在密文所在的列上建立索引,增加搜索速度,这个速度增长是很显着的,虽然会失去一些插入性能。
3、将对应的sql写成存储过程。省去预编译的时间。这个速度的提高也是很明显的。
至于你说的“怎么能保证不一样得明文加密后生成不一样得密文”
MD5就可以
MD5有两个特性:
1、任意两段明文数据,加密以后的密文不会是相同的
2、任意一段明文数据,经过加密以后,其结果永远是不变的
网上MD5加密的类应该有写好的
大致上方法就是这样了,都做到的话应该没有问题了,不会影响你的性能的

Ⅶ java语言实现密码加密

一般只有加密码过程,没有解密。
用户登陆时,把他输入的密码经过加密
再拿去与数据库里面的密码比较就可以了。
修改密码也是一样的原理,输入的原密码加密后与数据库密码比较,符合的话再将新密码加密后存入数据库覆盖原密码
现在流行的MD5加密算法 网上有很多JAVA的MD5算法

Ⅷ 如何利用JAVA对文档进行加密和解密处理,完整的java类

我以前上密码学课写过一个DES加解密的程序,是自己实现的,不是通过调用java库函数,代码有点长,带有用户界面。需要的话联系我

Ⅸ Java写一个加密文件或者文件夹的软件

这个用Java和C#来做估计不太合适,我只能给你提供思路,思路一,HookAPI的CreateProcess和ShellExecute这类打开文件的API函数,然后获得
打开的文件路径,然后判定这个文件是否在你的加密数据库中,如果是加密文件,则弹出密码框要求输入密码才能进入,这个程序需要做成一个常住
后台运行的。思路二写驱动,这样可以控制的很好。思路三,伪加密,这个貌似以前多数的加密软件都是此类模式,就是使用一些系统的属性将文件
移动到其他位置或者修改属性进行DOS模式类的隐藏,然后处理的。

Ⅹ java连接加密的sqllite数据库你怎么解决的

通过Java本身提供的JDBC连结
需要导入sqlitejdbc-v033-nested.jar文件

private static String url="org.sqlite.JDBC";
private static String dri="jdbc:sqlite:/D:test.db文件对应的目录路径(不能包含中文)";

public static Connection getConn(String table) throws Exception{

Class.forName(url);
Connection conn = DriverManager
.getConnection(dri+table);
return conn;
}

热点内容
sqlplus乱码 发布:2025-01-19 13:13:52 浏览:742
电脑都连不上服务器说ip不对 发布:2025-01-19 12:52:24 浏览:625
linux解压到文件夹命令 发布:2025-01-19 12:43:20 浏览:425
父母访问 发布:2025-01-19 12:33:05 浏览:794
加密文件如何编辑 发布:2025-01-19 12:31:18 浏览:219
androiddpi 发布:2025-01-19 12:21:15 浏览:655
服务器锁了怎么解 发布:2025-01-19 12:06:58 浏览:301
DH算法使用 发布:2025-01-19 11:57:30 浏览:932
Wcl上传如何选择服务器 发布:2025-01-19 11:17:24 浏览:763
如何编程简单给服务器发一个指令 发布:2025-01-19 11:16:44 浏览:806