java 实现文件内容的加密和解密

标签: java 文件 加密 | 发表时间:2014-10-05 03:39 | 作者:zhangzhaoaaa
出处:http://www.iteye.com

转载: http://xiaoxiaokuang.iteye.com/blog/1440031

留作备用,直接代码

 

package com.umapp.test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Key;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.KeyGenerator;

public class TestDES { 
  Key key; 
  public TestDES(String str) { 
    getKey(str);//生成密匙 
  } 
  /** 
  * 根据参数生成KEY 
  */ 
  public void getKey(String strKey) { 
    try { 
        KeyGenerator _generator = KeyGenerator.getInstance("DES"); 
        _generator.init(new SecureRandom(strKey.getBytes())); 
        this.key = _generator.generateKey(); 
        _generator = null; 
    } catch (Exception e) { 
        throw new RuntimeException("Error initializing SqlMap class. Cause: " + e); 
    } 
  } 

  /** 
  * 文件file进行加密并保存目标文件destFile中 
  * 
  * @param file   要加密的文件 如c:/test/srcFile.txt 
  * @param destFile 加密后存放的文件名 如c:/加密后文件.txt 
  */ 
  public void encrypt(String file, String destFile) throws Exception { 
    Cipher cipher = Cipher.getInstance("DES"); 
    // cipher.init(Cipher.ENCRYPT_MODE, getKey()); 
    cipher.init(Cipher.ENCRYPT_MODE, this.key); 
    InputStream is = new FileInputStream(file); 
    OutputStream out = new FileOutputStream(destFile); 
    CipherInputStream cis = new CipherInputStream(is, cipher); 
    byte[] buffer = new byte[1024]; 
    int r; 
    while ((r = cis.read(buffer)) > 0) { 
        out.write(buffer, 0, r); 
    } 
    cis.close(); 
    is.close(); 
    out.close(); 
  } 
  /** 
  * 文件采用DES算法解密文件 
  * 
  * @param file 已加密的文件 如c:/加密后文件.txt 
  *         * @param destFile 
  *         解密后存放的文件名 如c:/ test/解密后文件.txt 
  */ 
  public void decrypt(String file, String dest) throws Exception { 
    Cipher cipher = Cipher.getInstance("DES"); 
    cipher.init(Cipher.DECRYPT_MODE, this.key); 
    InputStream is = new FileInputStream(file); 
    OutputStream out = new FileOutputStream(dest); 
    CipherOutputStream cos = new CipherOutputStream(out, cipher); 
    byte[] buffer = new byte[1024]; 
    int r; 
    while ((r = is.read(buffer)) >= 0) { 
    	System.out.println();
        cos.write(buffer, 0, r); 
    } 
    cos.close(); 
    out.close(); 
    is.close(); 
  } 
  public static void main(String[] args) throws Exception { 
    TestDES td = new TestDES("aaa"); 
    td.encrypt("e:/r.txt", "e:/r解密.txt"); //加密 
    td.decrypt("e:/r解密.txt", "e:/r1.txt"); //解密 
    
  } 
}

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [java 文件 加密] 推荐:

java 实现文件内容的加密和解密

- - 编程语言 - ITeye博客
转载: http://xiaoxiaokuang.iteye.com/blog/1440031. getKey(str);//生成密匙. * 文件file进行加密并保存目标文件destFile中. * @param file 要加密的文件 如c:/test/srcFile.txt. * @param destFile 加密后存放的文件名 如c:/加密后文件.txt.

JAVA实现RSA加密解密

- - CSDN博客推荐文章
提供加密,解密,生成密钥对等方法. RSA加密原理概述   :. RSA的安全性依赖于大数的分解,公钥和私钥都是两个大素数(大于100的十进制位)的函数. 据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积   .  1.选择两个大素数 p,q ,计算 n=p*q;   .  2.随机选择加密密钥 e ,要求 e 和 (p-1)*(q-1)互质   .

Java的 class文件结构

- - Java - 编程语言 - ITeye博客
Java-class文件结构.        我们都知道我们现在写的源代码计算机是不认识的,我们需要根据指定的编译器进行编译-连接-执行,这样才是我们想要的结果,所以计算机只能认识0或者1 ,那么如何与操作系统或者机器指令无关的程序能执行,那么在操作系统以及机器指令之上的那就是虚拟机了,这样我们编写的代码不再是最终形成二进制本地指令代码,而是一种在操作系统和机器指令之上的虚拟机规定的文件格式.

Java写xml文件的编码问题

- - CSDN博客推荐文章
最近项目中需要生成xml格式的配置文件,用的是 javax.xml.transform.Transformer 类中提供的transform方法,在本地执行没问题,但是一旦把工程部署到Tomcat下运行,就会出现中文乱码的现象,纠结了许久,在大神的帮助下终于解决了. 有篇文章其实已经讲的很清楚了,链接如下:.

JAVA 动态(手动)加载jar文件

- - CSDN博客编程语言推荐文章
//filePath 是jar的绝对路径. //里面是一个url的数组,可以同时加载多个. //根据类名加载指定类,例:. //通过反射调用类中的方法,例如调用addFile方法,有1个String参数和一个int参数:. 如果有返回值,则直接返回需要的值,例:. 作者:kingboy123000 发表于2013-10-23 16:12:30 原文链接.

使用Java处理大文件

- - ImportNew
我最近要处理一套存储历史实时数据的大文件 fx market data,我很快便意识到,使用传统的InputStream不能够将它们读取到内存,因为每一个文件都超过了4G. 甚至编辑器都不能够打开这些文件. 在这种特殊情况下,我可以写一个简单的bash脚本将这些文件分成更小的文件块,然后再读取它.

Java读取远程主机文件

- - ITeye博客
//Java利用第三方jar包(ganymed-ssh2-build210.jar)读取远程主机文件. String idxMasterPath = useHome+"ADR/cb/data/master/";   //主侧IDX文件路径. String idxSlavePath = useHome+"ADR/cb/data/slave/";     //备侧文件路径.

分析一个Java Class文件

- - CSDN博客推荐文章
Java源码文件TestClass.java:. 展示这个Class文件的16进制内容:. 00 00 00 34 : 版本号是1.8.0;. 00 16: 说明常量池有21个常量,1-21, index留做他用;接下来就是分别这21个常量的描述:. 07/00 02 :CONSTANT_Class_info 常量,类名索引是该常量池的第2项;.

Java加解密艺术之DES对称加密算法

- - CSDN博客推荐文章
加密的时候使用密钥对数据进行加密,解密的时候使用同样的密钥对数据进行解密 * @see DES是美国国家标准研究所提出的算法. 由于加解密的数据安全性和密钥长度成正比,故DES的56位密钥已经形成安全隐患 * @see 后来针对DES算法进行了改进,有了三重DES算法(也称DESede或Triple-DES).

Android、iPhone和Java三个平台一致的加密方法

- - 移动开发 - ITeye博客
先前一直在做安卓,最近要开发iPhone客户端,这其中遇到的最让人纠结的要属Java、Android和iPhone三个平台加解密不一致的问题. 因为手机端后台通常是用JAVA开发的Web Service,Android和iPhone客户端调用同样的Web Service接口,为了数据安全考虑,要对数据进行加密.