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

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"); //解密 

  }
}
时间: 2024-10-03 02:12:22

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

Java 上传和下载文件(附加密和解密)

本文首发于:https://antoniopeng.com 使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.18.1</version> </de

java代码实现对excel加密、解密(设置或去除打开密码)

使用jxcell组件来完成对excel加密.解密的功能. jxcell.jar[点击下载](此jar没有使用限制,你懂得) 具体代码如下: import java.io.IOException; import com.jxcell.CellException; import com.jxcell.View; /** * excel加密.解密 代码 * * @author lifq * @date 2015-3-13 下午02:13:24 */ public class EncryptDecryp

Java结合keytool实现非对称加密和解密

在Java安全体系中,签名属于JAAS模块,加解密属于JCE模块.keytool的使用keytool是JDK自带的一个密钥库管理工具.这里只用到了keytool的部分功能,包括生成密钥对,导出公钥等.keytool生成的公钥/私钥对存放到一个到了一个文件中,这个文件有密码保护,通称为keystore.生成密钥对$ keytool -genkey -alias signLegal -keystore examplestanstore2 -validity 1800 -keyalg RSA生成别名为

Java解析文件内容

本文主要实现对.chk文件的解析,将其内容读出来,存入到一个Map中,文件内容实例为: A0500220140828.CHK A05002 |34622511 |373532879 |3 识别分隔符|,代码如下所示: 1 package com.src.factory; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileReader; 6 import java.io.IOExceptio

小例子: 压缩文件时的加密与解密(read + openssl + tar + dd)

1.有的文件需要加密一下 2.有的文件夹需要加密一下 分析: 文件或文件夹加密时需考量的几个问题? 文件夹自动补全时后缀有反斜杠处理规则 单个文件加密时命名的规则 >脚本命令的格式规定为./ss {unEncryptFile | unEncryptDir} >先判断第一个参数是文件还是文件夹 1.文件夹时 > 判断文件夹是否有反斜杠 > 以文件夹的名称做为生成的压缩包名称 2.文件时 > 此处加密时linux中文件后缀去掉 > 当使用压缩和解压缩时后缀就挺有意义的 &g

java读取文件内容常见几种方式

①随机读取文件内容 ②以行为单位读取文件,常用于读面向行的格式化文件 ③以字符为单位读取文件,常用于读文本,数字等类型的文件 ④以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件 package com.control; import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.IOExcepti

java修改文件内容

文件的读和写,大家都不陌生,但是修改呢?按照普通的读写流去修改的话,只能全部读取出来,在内存中修改好后,全部写进去,这样对于文件内容过多的时,性能很低. 最近在遇到这个问题的时候,发现RandomAccessFile这个类正好能解决我的问题,废话不多说,下面直接贴代码,分享给大家,有不对的地方欢迎指教,谢谢 /**     * 修改文件内容     * @param fileName     * @param oldstr     * @param newStr     * @return  

java读取文件内容

获取文件内容 picurl = "http://www.baidu.com/data.txt"; URL urlfile = new URL(picurl); BufferedReader in = new BufferedReader(new InputStreamReader(urlfile.openStream(),"utf-8")); //utf-8避免中文乱码 String content=""; String inputLine =i

简单的文件读写---文件简单的加密、解密

文件加密 package encryption; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class Encryption { //文件加密 public static void Encrypt(File file){ if(file == null){ return; } try { @SuppressWarnings("resource") Ra