DES 加密解密 文件工具类
public class DESEncrypt {
/** 加密工具 */
private Cipher encryptCipher = null;
/** 解密工具 */
private Cipher decryptCipher = null;
private static String keyVal = "asdf1234";
public DESEncrypt(){
try {
this.initialize_encryptKey(keyVal);
this.initalize_dencryptkey(keyVal);
} catch (Exception e) {
e.printStackTrace();
}
}
private void initialize_encryptKey(String keyValue) throws Exception{
Key key = getKey(keyValue.getBytes());
encryptCipher = Cipher.getInstance("DES");
encryptCipher.init(Cipher.ENCRYPT_MODE, key);
}
public void initalize_dencryptkey(String keyValue) throws Exception {
Key key = getKey(keyValue.getBytes());
decryptCipher = Cipher.getInstance("DES");
decryptCipher.init(Cipher.DECRYPT_MODE, key);
}
/**
* 从指定字符串生成密钥,密钥所需的字节数组长度为8位 不足8位时后面补0,超出8位只取前8位
*
* @param arrBTmp
* 构成该字符串的字节数组
* @return 生成的密钥
* @throws java.lang.Exception
*/
private Key getKey(byte[] arrBTmp) throws Exception {
// 创建一个空的8位字节数组(默认值为0)
byte[] arrB = new byte[];
// 将原始字节数组转换为8位
for (int i = ; i < arrBTmp.length && i < arrB.length; i++) {
arrB[i] = arrBTmp[i];
}
// 生成密钥
Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES");
return key;
}
/**
* 加密字节数组
*
* @param arrB
* 需加密的字节数组
* @return 加密后的字节数组
* @throws Exception
*/
public byte[] encrypt(byte[] arrB) throws Exception {
return encryptCipher.doFinal(arrB);
}
/**
* 解密字节数组
*
* @param arrB
* 需解密的字节数组
* @return 解密后的字节数组
* @throws Exception
*/
public byte[] decrypt(byte[] arrB) throws Exception {
return decryptCipher.doFinal(arrB);
}
/**
* 文件file进行加密并保存目标文件destFile中
*
* @param file
* 要加密的文件 如c:/test/srcFile.txt
* @param destFile
* 加密后存放的文件名 如c:/加密后文件.txt
*/
public void encrypt(String sourceFileName, String diminationFileName) throws Exception {
InputStream is = new FileInputStream(sourceFileName);
OutputStream out = new FileOutputStream(diminationFileName);
CipherInputStream cis = new CipherInputStream(is, encryptCipher);
byte[] buffer = new byte[];
int r;
while ((r = cis.read(buffer)) > -) {
out.write(buffer, , r);
}
cis.close();
is.close();
out.close();
}
public void encrypt(File sourceFile, File diminationFile) throws Exception {
InputStream is = new FileInputStream(sourceFile);
OutputStream out = new FileOutputStream(diminationFile);
CipherInputStream cis = new CipherInputStream(is, encryptCipher);
byte[] buffer = new byte[];
int r;
while ((r = cis.read(buffer)) > -) {
out.write(buffer, , r);
}
cis.close();
is.close();
out.close();
}
/**
* 文件采用DES算法解密文件
*
* @param file
* 已加密的文件 如c:/加密后文件.txt * @param destFile 解密后存放的文件名 如c:/
* test/解密后文件.txt
*/
public void decrypt(String sourceFileName, String diminationFileName) throws Exception {
InputStream is = new FileInputStream(sourceFileName);
OutputStream out = new FileOutputStream(diminationFileName);
CipherOutputStream cos = new CipherOutputStream(out, decryptCipher);
byte[] buffer = new byte[];
int r;
while ((r = is.read(buffer)) >= ) {
cos.write(buffer, , r);
}
cos.close();
out.close();
is.close();
}
public void decrypt(File sourceFile, File fileout ) throws Exception {
InputStream is = new FileInputStream(sourceFile);
OutputStream out = new FileOutputStream(fileout);
CipherOutputStream cos = new CipherOutputStream(out, decryptCipher);
byte[] buffer = new byte[];
int r;
while ((r = is.read(buffer)) >= ) {
cos.write(buffer, , r);
}
cos.close();
out.close();
is.close();
}
public static void main(String[] args) throws Exception {
DESEncrypt t = new DESEncrypt();
//t.initialize_encryptKey(keyVal);
//t.initalize_dencryptkey(keyVal);
Long l = System.currentTimeMillis();
System.out.println("开始"+l);
t.encrypt("e:/ceshi.sql", "e:/ceshi2.sql");
System.out.println("结束"+(System.currentTimeMillis()-l));
t.decrypt("e:/ceshi2.sql", "e:/ceshi3.sql");
System.out.println("结束2"+(System.currentTimeMillis()-l));
}
}
凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字凑150字
DES 加密解密 文件工具类的更多相关文章
- 一个java的DES加密解密类转换成C#
一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...
- DES加密解密与AES加密解密
随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了之后渐渐就陌生了.所以在这里写一些日后可能会用到的加密与解密. 一.AES加密算法和DES加 ...
- DES加密解密 MD5加密解密
#region MD5 加密 /// <summary> /// MD5加密静态方法 /// </summary> /// <param name="Encry ...
- DES加密解密
加密后生成Base64字符串,并去除'='字符. 加密后替换掉'+',这样加密后的字符串可以作为url参数传递. using System; using System.IO; using System ...
- 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...
- 使用 gzexe 快速加密解密文件内容
使用 gzexe 快速加密解密文件内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用sshpass工具编写远程管理脚本 1>.安装依赖包 [root@node101 ...
- DES加密/解密
/// <summary> /// DES加密/解密类. /// </summary> public class DESEncrypt { #region ========加密 ...
- 【DES加密解密】 C#&JAVA通用
DES加密解密 C# Code /// <summary> /// DES加密解密帮助类 /// </summary> public static class DESHelpe ...
- php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密
PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加 ...
随机推荐
- 前端基础进阶(十五):详解 ES6 Modules
对于新人朋友来说,想要自己去搞定一个ES6开发环境并不是一件容易的事情,因为构建工具的学习本身又是一个非常大的方向,我们需要花费不少的时间才能掌握它. 好在慢慢的开始有大神提供了一些非常简单易懂,学习 ...
- unicode、encode、decode
1.encode与decode:unicode经过encode -> utf-8,反过来为decode. 爬虫读取网页内容和pandas读取csv时,会把读取到的文字内容转成unicode,当我 ...
- node_modules内容太大导致webstrom非常卡
选中一个文件夹,例如node_modules,点击右键->mark directory as ->excluded,这样就可以把这个文件标记并排除出来,使webstorm不会扫描这个文件下 ...
- STM32读取Guidance数据——Guidance SDK
更新记录:2019/11/14 更新STM32(F407VET6)读取Guidance数据 Github地址. 背景:想要将祖传的Guidance用于DJI A3/新固件的N3飞控.DJI已经停 ...
- ES6-变量let和常量const
1.以往js变量 var 1.可以重复声明 2.无法限制修改(指不能声明常量) 3.没有块级作用域(指{}这样的) 2.现在ES6变量 let 不能重复声明-变量,可以修改,块级作用域 const 不 ...
- 我终于搞清了啥是 HTTPS 了
引言 最近上海连续下了一周雨,温度一夜之间回到解放前,穿夏装的我被冻得瑟瑟发抖,躲在家里哪也不想去. 在家百无聊赖的刷着网页,看到公众号后台的留言,有同学问我 HTTP 和 HTTPS 有啥区别? 这 ...
- Java写算法题中那些影响你效率的细节(关于暴力破解算法题的细节处理)
QQ讨论群:99979568 多交流才能进步 暂时写到这里,有不懂的欢迎评论, 如果有什么其他提高效率的细节,欢迎评论或者私信我,小编一定努力学习,争取早日分享给大家 如果大家嫌三连累的话,可以看看这 ...
- Java实现 LeetCode 773 滑动谜题(BFS)
773. 滑动谜题 在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示. 一次移动定义为选择 0 与一个相邻的数字(上下左右)进行交换. 最终 ...
- (Java实现)蓝桥杯Excel地址
历届试题 Excel地址 原题地址 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 Excel单元格的地址表示很有趣,它使用字母来表示列号. 比如, A表示第1列, B表示第2列, ...
- Java实现 蓝桥杯 基础练习 特殊的数字
基础练习 特殊的数字 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333.编程求所 ...