使用java自带des加密算法实现文件加密和字符串加密_java

复制代码 代码如下:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
public class DesTool {
 private static final String PASSKEY = "afasdf";
 private static final String DESKEY = "asfsdfsdf";
 /**
  * @Comments :对文件进行加密
  * @param filePath  要加密的文件路径
  * @param fileName 文件
  * @param mode 加密模式  加密:Cipher.ENCRYPT_MODE 解密:Cipher.DECRYPT_MODE
  * @return
  */
 public static String encoderOrdecoder(String filePath, String fileName, int mode) {

  InputStream is = null;
  OutputStream out = null;
  CipherInputStream cis = null;

  try {
   SecureRandom sr = new SecureRandom();
   DESKeySpec dks = new DESKeySpec(DESKEY.getBytes());
   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
   SecretKey securekey = keyFactory.generateSecret(dks);
   IvParameterSpec iv = new IvParameterSpec(PASSKEY.getBytes());
   Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
   cipher.init(mode, securekey, iv, sr);

   File encoderFile = new File(filePath + File.separator + "encoder");
   if (!encoderFile.exists()) {
    encoderFile.mkdir();
   }

   is = new FileInputStream(filePath + File.separator + fileName);
   out = new FileOutputStream(filePath + File.separator + "encoder"
     + File.separator + fileName);

   cis = new CipherInputStream(is, cipher);
   byte[] buffer = new byte[1024];
   int r;
   while ((r = cis.read(buffer)) > 0) {
    out.write(buffer, 0, r);
   }

  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    if (is != null) {
     is.close();
    }
    if (cis != null) {
     cis.close();
    }
    if (out != null) {
     out.close();
    }
   } catch (Exception e1){

   }
  }
  return filePath + File.separator + "encoder" + File.separator
    + fileName;
 }

/**@Comments :对字符串进行加密
 * @param src 源字符串
 * @param mode 加密模式  加密:Cipher.ENCRYPT_MODE 解密:Cipher.DECRYPT_MODE
 * @return
 */
public static String encoderOrdecoder( String src, int mode) {
  String tag="";
  InputStream is = null;
  OutputStream out = null;
  CipherInputStream cis = null;

  try {
   SecureRandom sr = new SecureRandom();
   DESKeySpec dks = new DESKeySpec(DESKEY.getBytes());
   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
   SecretKey securekey = keyFactory.generateSecret(dks);
   IvParameterSpec iv = new IvParameterSpec(PASSKEY.getBytes());
   Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
   cipher.init(mode, securekey, iv, sr);
   cis = new CipherInputStream(new ByteArrayInputStream(src.getBytes()) , cipher);
   out=new ByteArrayOutputStream();
   byte[] buffer = new byte[1024];
   int r;
   while ((r = cis.read(buffer)) > 0) {
    out.write(buffer, 0, r);
   }
   tag=out.toString();
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    if (is != null) {
     is.close();
    }
    if (cis != null) {
     cis.close();
    }
    if (out != null) {
     out.close();
    }
   } catch (Exception e1){

   }
  }
  return tag;
 }
 public static void main(String[] args) {
  System.out.println("aaa"); 
  String t=encoderOrdecoder("aaa", Cipher.ENCRYPT_MODE );
  System.out.println(t); 
  System.out.println(encoderOrdecoder(t, Cipher.DECRYPT_MODE ));
 }
}

时间: 2024-09-08 11:52:57

使用java自带des加密算法实现文件加密和字符串加密_java的相关文章

JAVA技术实现上传下载文件到FTP服务器(完整)_java

具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 .之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲

java中struts2实现简单的文件上传与下载_java

一.Struts2文件上传 Struts2的文件上传实现非常简单,只需要简单几步就可完成:注意: (1)文件上传的struts2标签为:<s:file name="" label="上传"/> (2)文件上传的前提是表单属性method="post" enctype="multipart/form-data"; (3)web应用中必须包含common-fileupload.jar和common-io.jar,因为s

Java使用jxl包写Excel文件适合列宽实现_java

注意,这个只是基本可以实现,基本针对中文电子报表. 1.实现思路(1)一般的中文汉字占位长度是英文字母的2倍,"方块字"很统一.(2)对于要写入Excel中的数据统计每一列的最大列宽,最后直接将这一列的列宽设置为这个列的最大值即可. 2.实现代码 复制代码 代码如下: import java.io.File;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import jav

java判断远程服务器上的文件是否存在的方法_java

在做数据文件导入到   LEFTII   中是遇到一个文件,在做导入的时候有时候生成的原始文件可能不存在,现在通过加一个判断,判断文件是否存在,起初以为简单的判断文件   file.exists()   存不存在就行了,但是后来事实证明这个只能判断本地的文件是否存在. 这里我们通过一个巧妙的方法告诉大家,就是把远程的文件共享到本地来,通过电脑的衍射可以轻而易举的解决这个问题 过程如下 然后在下面的步骤输入用户名,密码,这样就可以通过判断本地是否存在这个文件就搞定了.

Java实现文件的RSA和DES加密算法

根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)   对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密. 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的.   1    对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):          数据加密标准,速度较快,适用于加密大量数据的场合. 3

利用JAVA实现DES加密算法_mssql2008

DES加密介绍DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法.DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解.虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现. JAVA实现加密代码有详细解释,不多废话.注意:DES加密和解密过程中,密钥长度都必须是8的倍数 复制代码 代码如下:         public b

java des加密算法的替代

问题描述 用java自带的des加密算法得到的结果是32位的,有没有类似的算法可以得到短一点的结果?(需要加密的内容长度不会大于20个字符) 解决方案 解决方案二:如果无论多长的原文,都产生20个字符以内的密文,而且还需要解密的话,你想一想就可以知道这是不可能的!解决方案三:压缩....解决方案四:如果不需要解密的话,自己截取.如果想解密,那么,我不知道该怎么弄解决方案五:20个字符以内的密文能表示的内容是有限的...不能说无论多长的明文都能加密或是类似压缩得出的

java怎么实现浏览器自带下载工具下载文件

问题描述 java怎么实现浏览器自带下载工具下载文件 java实现下载时 用IE浏览器总是连接迅雷,请求会被发送两次,第二次发送需要传送的参数就会被清空. 用google浏览器时,浏览器会调用自带下载工具下载文件,请求就会只发送一次.如何实现用浏览器自带下载工具下载文件呢?struts配置文件如下: 解决方案 关闭 迅雷下载的自动下载 就可以避免连接迅雷.用IE浏览器下载尝试.配置文件是没有问题的,是你本地软件配置的问题. 解决方案二: 该说的楼上都说了,但是大家作为程序员,我要说的是给你的几点

详解DES加密算法及在Java程序中的使用示例_java

DES加密算法DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来. DES算法的入口参数有三个:Key.Data.Mode.其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密. DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥