知识大全 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源代码

利用DES加密算法保护Java源代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java语言

知识大全 3DES加密解密调用示例

3DES加密解密调用示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在java中调用sun公

知识大全 用C#实现Des加密和解密

小技巧:用C#实现Des加密和解密  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  usingSy

知识大全 .NET中的DES对称加密

.NET中的DES对称加密  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DES是一种对称加密(

知识大全 PHP使用DES进行加密与解密的方法

PHP使用DES进行加密与解密的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  代码如下: 

知识大全 使用DES对称加密代码,支持中文

使用DES对称加密代码,支持中文  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!//名称空间usin

知识大全 使用C#编写DES加密程序的framework

使用C#编写DES加密程序的framework  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  还

知识大全 一个可逆的DES和TripleDES方式加密类

一个可逆的DES和TripleDES方式加密类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!usi

知识大全 C#中DES加密用法的使用方法

C#中DES加密用法的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在C#中直接引用加