1. 程式人生 > >java DES加密解密檔案

java DES加密解密檔案

在android開發中或者java開發中,經常用一些加密或者解密檔案的,下面是我最近測試的一個DES加密解密檔案的方式,記錄一下,防止以後忘記了!

下面直接貼程式碼把,詳細的註釋都寫有:

package com.spring.des;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

/***
 * Des檔案加密解密
 * 
 * @author spring sky<br>
 * Email:
[email protected]
<br> * QQ:840950105 * */ public class DesFileEncrypt { /** * 要加密的檔案路徑列表 */ public static String[] filePath = { "D:/sasdfp.sql" }; /** * 加密後的檔案路徑列表 */ public static String[] outFilePath = new String[filePath.length]; private static final String KEY = "spring sky"; public DesFileEncrypt() { super(); getKey(KEY); initCipher(); //初始化開始加密檔案 crateEncryptFile(); } private Key key; /*** * 解密密碼 */ private Cipher cipherDecrypt; /** * 加密密碼 */ private Cipher cipherEncrypt; /** * 加密檔案平且記錄加密後的檔案路徑 * */ private void crateEncryptFile() { String outPath = null; for (int i = 0; i < filePath.length; i++) { try { outPath = filePath[i].substring(0,filePath[i].lastIndexOf("."))+".bin"; encrypt(filePath[i], outPath); outFilePath[i] = outPath; System.out.println(filePath[i]+"加密完成,加密後的檔案是:"+outFilePath[i]); } catch (Exception e) { e.printStackTrace(); } } System.out.println("=========================加密完成======================="); } /** * 加密檔案的核心 * * @param file * 要加密的檔案 * @param destFile * 加密後存放的檔名 */ public void encrypt(String file, String destFile) throws Exception { InputStream is = new FileInputStream(file); OutputStream out = new FileOutputStream(destFile); CipherInputStream cis = new CipherInputStream(is, cipherEncrypt); byte[] buffer = new byte[1024]; int r; while ((r = cis.read(buffer)) > 0) { out.write(buffer, 0, r); } cis.close(); is.close(); out.close(); } /*** * 解密檔案 * @param destFile */ public void decrypt(String destFile) { try { InputStream is = new FileInputStream(destFile); CipherInputStream cis = new CipherInputStream(is, cipherDecrypt); BufferedReader reader = new BufferedReader(new InputStreamReader( cis)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); cis.close(); is.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void initCipher() { try { // 加密的cipher cipherEncrypt = Cipher.getInstance("DES"); cipherEncrypt.init(Cipher.ENCRYPT_MODE, this.key); // 解密的cipher cipherDecrypt = Cipher.getInstance("DES"); cipherDecrypt.init(Cipher.DECRYPT_MODE, this.key); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } } /** * 自定義一個key * * @param string */ public Key getKey(String keyRule) { // Key key = null; byte[] keyByte = keyRule.getBytes(); // 建立一個空的八位陣列,預設情況下為0 byte[] byteTemp = new byte[8]; // 將使用者指定的規則轉換成八位陣列 for (int i = 0; i < byteTemp.length && i < keyByte.length; i++) { byteTemp[i] = keyByte[i]; } key = new SecretKeySpec(byteTemp, "DES"); return key; } /** * 解密密碼 * * @return */ public Cipher getCipherEdcrypt() { return cipherDecrypt; } /** * 加密密碼 * * @return */ public Cipher getCipherEncrypt() { return cipherEncrypt; } /*** * 測試加密解密 * @param args */ public static void main(String[] args) { DesFileEncrypt desFileEncrypt = new DesFileEncrypt(); desFileEncrypt.decrypt(outFilePath[0]); //解密第一個檔案平且測試解密後的結果 } }


相關推薦

java DES加密解密檔案

在android開發中或者java開發中,經常用一些加密或者解密檔案的,下面是我最近測試的一個DES加密解密檔案的方式,記錄一下,防止以後忘記了! 下面直接貼程式碼把,詳細的註釋都寫有: package com.spring.des; import java.i

Java Des加密解密工具類

原文連結: 1、http://www.java2s.com/Code/Java/Security/EncryptingaStringwithDES.htm 2、http://www.avajava.com/tutorials/lessons/how-do-i-encrypt

Java DES 加密解密源碼

ex18 detail r文件 index nco keyword [] 接口 crypto Java密碼學結構設計遵循兩個原則: 1) 算法的獨立性和可靠性。 2) 實現的獨立性和相互作用性。 算法的獨立性是通過定義密碼服務類來獲得。用戶只需了解密碼算法的概念,而不用

python進行des加密解密,而且可以與JAVA進行互相加密解密

odi times pla dea details names ideal cati encrypt import binasciifrom pyDes import des, CBC, PAD_PKCS5import uuidimport time# pip instal

java php DES 加密解密

Java程式碼   import java.io.IOException;   import java.security.SecureRandom;   import javax.crypto.Cipher;   import javax.crypto.SecretKey;   import jav

DES加密解密->java實現

DES加密解密涉及到的JAVA類 Cipher 此類為加密和解密提供密碼功能。它構成了 Java Cryptographic Extension (JCE) 框架的核心。 為建立 Cipher 物件,應用程式呼叫 Cipher 的 getInstan

Java實現DES加密解密演算法

import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFact

PHP、JAVA、C#、Object-C、Android 通用的DES加密解密

PHP加密解密: class JoDES { private static $_instance = NULL; /** * @return JoDES */ public static function sh

Java使用Hutool實現AES、DES加密解密

介紹 AES和DES同屬對稱加密演算法,資料發信方將明文(原始資料)和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在

Java DES 加密解密原始碼

Java密碼學結構設計遵循兩個原則: 1) 演算法的獨立性和可靠性。 2) 實現的獨立性和相互作用性。 演算法的獨立性是通過定義密碼服務類來獲得。使用者只需瞭解密碼演算法的概念,而不用去關心如何實現這些概念。實現的獨立性和相互作用性通過密碼服務提供器

C# 實現 JAVA AES加密解密[原創]

com base gets tran con spec ole tor 技術分享 以下是網上普遍能收到的JAVA AES加密解密方法。 因為裏面用到了KeyGenerator 和 SecureRandom,但是.NET 裏面沒有這2個類。無法使用安全隨機數生成KEY。 我們

C#des加密解密

length format esp lin div logs fin sin esc using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy

C#-java RSA加密解密

過程 data readline utf 解密 param rsa私鑰 convert graph using Org.BouncyCastle.Math;using Org.BouncyCastle.Crypto.Parameters;using Org.BouncyCa

Java Base64 加密/解密

tex java ext nco nload utf desc exception itl Base64常用來表示字串加密過後的內容,使用Java 程式語言來實作Base64的編碼與解碼功能 1.在Java上做Base64的編碼與解碼,會使用到JDK裏sun.misc套件下

java AES 加密解密工具(Advanced Encryption Standard)

@param key block 生成 utf i++ spec res null 1、通用方法 package com.qlkj.hzd.commom.utils; import javax.crypto.*; import java.io.Unsupported

php7 des加密解密

1.在linux 環境中如果沒有裝encrypt擴充套件 或者php版本大於7.1不支援encrypt加密擴充套件   可以使用openssl加密擴充套件 下面是封裝的加密和解密的方法可直接呼叫   /** * des-ecb加密 * @param str

Java base64加密解密 兩種實現方式

1、為什麼要使用Base 64     Base 64主要用途不是加密,而是把一些二進位制數轉成普通字元,方便在網路上傳輸。 由於一些二進位制字元在傳輸協議中屬於 控制字元,不能直接傳送,所以需要轉換一下才可以。由於某些系統中只能使用ASCII字元,Base64

通用RSA加密 - PHP+Java+Javascript加密解密

php端生成 公鑰私鑰 1、openssl genrsa -out rsa_private_key.pem 1024    私鑰 2、openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem&nbs

java實現加密解密

1.加密 public static String encryt(String str) { // 根據金鑰,對Cipher物件進行初始化,ENCRYPT_MODE表示加密模式 try { Cipher c = Cipher.getInstance(“AES”); c.init(Cipher

C#與Java AES 加密解密

參考文件:https://www.cnblogs.com/xbzhu/p/7064642.html 前幾天對接Java介面,需要C#加密引數,Java解密。奈何網上找了一堆大同小異的加解密方法都跟Jaca加密的密文不一致,Java介面也無法解密,直到看見上面連結的第二種方法。能夠正常的解密Java加密的