知识大全 JAVA DES加密解密实现
Posted 字节
篇首语:行是知之始,知是行之成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JAVA DES加密解密实现相关的知识,希望对你有一定的参考价值。
JAVA DES加密解密实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
package txl test;
import java security SecureRandom;
import javax crypto Cipher;
import javax crypto SecretKey;
import javax crypto SecretKeyFactory;
import javax crypto spec DESKeySpec;
/**
* DES加解密 支持与delphi交互(字符串编码需统一为UTF )
*
* @author wym
*/
public class DESCipherCrossoverDelphi
/**
* 密钥
*/
public static final String KEY = u Gqu Z ;
private final static String DES = DES ;
/**
* 加密
*
* @param src
* 明文(字节)
* @param key
* 密钥 长度必须是 的倍数
* @return 密文(字节)
* @throws Exception
*/
public static byte[] encrypt(byte[] src byte[] key) throws Exception
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密匙数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密匙工厂 然后用它把DESKeySpec转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory getInstance(DES);
SecretKey securekey = keyFactory generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher getInstance(DES);
// 用密匙初始化Cipher对象
cipher init(Cipher ENCRYPT_MODE securekey sr);
// 现在 获取数据并加密
// 正式执行加密操作
return cipher doFinal(src);
/**
* 解密
*
* @param src
* 密文(字节)
* @param key
* 密钥 长度必须是 的倍数
* @return 明文(字节)
* @throws Exception
*/
public static byte[] decrypt(byte[] src byte[] key) throws Exception
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密匙数据创建一个DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密匙工厂 然后用它把DESKeySpec对象转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory getInstance(DES);
SecretKey securekey = keyFactory generateSecret(dks);
// Cipher对象实际完成解密操作
Cipher cipher = Cipher getInstance(DES);
// 用密匙初始化Cipher对象
cipher init(Cipher DECRYPT_MODE securekey sr);
// 现在 获取数据并解密
// 正式执行解密操作
return cipher doFinal(src);
/**
* 加密
*
* @param src
* 明文(字节)
* @return 密文(字节)
* @throws Exception
*/
public static byte[] encrypt(byte[] src) throws Exception
return encrypt(src KEY getBytes());
/**
* 解密
*
* @param src
* 密文(字节)
* @return 明文(字节)
* @throws Exception
*/
public static byte[] decrypt(byte[] src) throws Exception
return decrypt(src KEY getBytes());
/**
* 加密
*
* @param src
* 明文(字符串)
* @return 密文( 进制字符串)
* @throws Exception
*/
public final static String encrypt(String src)
try
return byte hex(encrypt(src getBytes() KEY getBytes()));
catch (Exception e)
e printStackTrace();
return null;
/**
* 解密
*
* @param src
* 密文(字符串)
* @return 明文(字符串)
* @throws Exception
*/
public final static String decrypt(String src)
try
return new String(decrypt(hex byte(src getBytes()) KEY getBytes()));
catch (Exception e)
e printStackTrace();
return null;
/**
* 加密
*
* @param src
* 明文(字节)
* @return 密文( 进制字符串)
* @throws Exception
*/
public static String encryptToString(byte[] src) throws Exception
return encrypt(new String(src));
/**
* 解密
*
* @param src
* 密文(字节)
* @return 明文(字符串)
* @throws Exception
*/
public static String decryptToString(byte[] src) throws Exception
return decrypt(new String(src));
public static String byte hex(byte[] b)
String hs = ;
String stmp = ;
for (int n = ; n < b length; n++)
stmp = (java lang Integer toHexString(b[n] & XFF));
if (stmp length() == )
hs = hs + + stmp;
else
hs = hs + stmp;
return hs toUpperCase();
public static byte[] hex byte(byte[] b)
if ((b length % ) != )
throw new IllegalArgumentException( 长度不是偶数 );
byte[] b = new byte[b length / ];
for (int n = ; n < b length; n += )
String item = new String(b n );
b [n / ] = (byte) Integer parseInt(item );
return b ;
public static void main(String[] args)
try
String src = hello ;
String crypto = DESCipherCrossoverDelphi encrypt(src);
System out println( 密文[ + src + ]: + crypto);
System out println( 解密后:
+ DESCipherCrossoverDelphi decrypt(crypto));
catch (Exception e)
e printStackTrace();
============================把文件进行解密加密===================================
public static File encrypt(File file String path)
File EncFile = new File(path);
if (!EncFile exists())
try
EncFile createNewFile();
catch (Exception e)
e printStackTrace();
try
FileInputStream fin = new FileInputStream(file);
ByteArrayOutputStream bout = new ByteArrayOutputStream(fin available());
byte b[] = new byte[fin available()];
int n;
while ((n = fin read(b)) != )
byte temp[] = encrypt(b key getBytes());
bout write(temp temp length);
fin close();
bout close();
FileOutputStream fout = new FileOutputStream(EncFile);
BufferedOutputStream buffout = new BufferedOutputStream(fout);
buffout write(bout toByteArray());
buffout close();
fout close();
catch (Exception e)
e printStackTrace();
return EncFile;
public static File decrypt(File file String path)
File desFile = new File(path);
if (!desFile exists())
try
desFile createNewFile();
catch (Exception e)
e printStackTrace();
try
FileInputStream fin = new FileInputStream(file);
int i=fin available() fin available()%key length();
ByteArrayOutputStream bout = new ByteArrayOutputStream(i);
byte b[] = new byte[i];
int n;
while((n = fin read(b)) != )
byte temp[] = decrypt(b key getBytes());
bout write(temp temp length);
fin close();
bout close();
FileOutputStream fout = new FileOutputStream(desFile);
BufferedOutputStream buffout = new BufferedOutputStream(fout);
buffout write(bout toByteArray());
buffout close();
fout close();
catch (Exception e)
e printStackTrace();
return desFile;
cha138/Article/program/Java/hx/201311/25606
相关参考
利用DES加密算法保护Java源代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java语言
3DES加密解密调用示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在java中调用sun公
小技巧:用C#实现Des加密和解密 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! usingSy
.NET中的DES对称加密 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DES是一种对称加密(
PHP使用DES进行加密与解密的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 代码如下:
使用DES对称加密代码,支持中文 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!//名称空间usin
使用C#编写DES加密程序的framework 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 还
一个可逆的DES和TripleDES方式加密类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!usi
C#中DES加密用法的使用方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在C#中直接引用加