网站首页 > 文章中心 > 其它

java文件加密代码

作者:小编 更新时间:2023-08-10 13:47:07 浏览量:200人看过

求java文件加密代码

package com.happy.security.properties;

java文件加密代码-图1

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.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.security.Key;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import java.security.Security;

import javax.crypto.Cipher;

java文件加密代码-图2

import javax.crypto.KeyGenerator;

public class DESEncryptUtil {

public static Key createKey() throws NoSuchAlgorithmException {//创建密钥

Security.insertProviderAt(new com.sun.crypto.provider.SunJCE(), 1);

KeyGenerator generator = KeyGenerator.getInstance("DES");

generator.init(new SecureRandom());

Key key = generator.generateKey();

return key;

}

public static Key getKey(InputStream is) {

try {

ObjectInputStream ois = new ObjectInputStream(is);

return (Key) ois.readObject();

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

private static byte[] doEncrypt(Key key, byte[] data) {//对数据进行加密?

cipher.init(Cipher.ENCRYPT_MODE, key);

byte[] raw = cipher.doFinal(data);

return raw;

public static InputStream doDecrypt(Key key, InputStream in) {//对数据进行解密?

cipher.init(Cipher.DECRYPT_MODE, key);

ByteArrayOutputStream bout = new ByteArrayOutputStream();

int count = 0;

while ((count = in.read(tmpbuf)) != -1) {

bout.write(tmpbuf, 0, count);

in.close();

byte[] orgData = bout.toByteArray();

byte[] raw = cipher.doFinal(orgData);

ByteArrayInputStream bin = new ByteArrayInputStream(raw);

return bin;

} catch (Exception e){

public static void main(String[] args) throws Exception{

System.out.println("===================");

Key key = DESEncryptUtil.createKey();

ObjectOutputStream oos = new ObjectOutputStream(

new FileOutputStream(args[1]));

oos.writeObject(key);

oos.close();

System.out.println("成功生成密钥文件");

File file = new File(args[1]);

FileInputStream in = new FileInputStream(file);

while ((count = in.read(tmpbuf)) != -1){

byte[] raw = DESEncryptUtil.doEncrypt(key, orgData);

file = new File(file.getParent() + "\\en_" + file.getName());

FileOutputStream out = new FileOutputStream(file);

out.write(raw);

out.close();

System.out.println("成功加密,加密文件位:"+file.getAbsolutePath());

FileInputStream fis = new FileInputStream(file);

InputStream raw = DESEncryptUtil.doDecrypt(key, fis);

while ((count = raw.read(tmpbuf)) != -1){

raw.close();

file = new File(file.getParent() + "\\rs_" + file.getName());

FileOutputStream fos = new FileOutputStream(file);

fos.write(orgData);

System.out.println("成功解密,解密文件位:"+file.getAbsolutePath());

}else if(args.length==1 args[0].equals("-h")) {

System.out.println("\t文件加密解密\n");

System.out.println

用java写个文件加密的代码该怎么写

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;

import java.security.*;

import javax.crypto.*;

import javax.crypto.spec.*;

/**

文件名:FileEncrypter.java

说明:文件加密

加密方法:三重DES加密

加密过程:对选中的文件加密后在同文件夹下生成一个增加了".tdes"

扩展名的加密文件

解密过程:对选中的加密文件(必须有".tdes"扩展名)进行解密

*/

public class FileEncrypter extends JFrame{

public static void main(String args[]) {

FileEncrypter fe = new FileEncrypter();

fe.show();

FileEncrypter(){

this.setSize(WIDTH,HEIGHT);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setResizable(false);

Toolkit tk = Toolkit.getDefaultToolkit();

Dimension screenSize = tk.getScreenSize();

this.setTitle("文件加密器(TriDES)");

Container c = this.getContentPane();

c.setLayout( new FlowLayout());

final FilePanel fp = new FilePanel("文件选择");

c.add(fp);

final KeyPanel pp = new KeyPanel("密码");

c.add(pp);

JButton jbE = new JButton("加密");

c.add(jbE);

jbE.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent event){

File file = new File(fp.getFileName());

if (file.exists())

encrypt(file.getAbsoluteFile(),pp.getKey());

else

JOptionPane.showMessageDialog(

null,"请选择文件!","提示",JOptionPane.OK_OPTION);

});

JButton jbD = new JButton("解密");

c.add(jbD);

jbD.addActionListener(new ActionListener(){

decrypt(file.getAbsoluteFile(),pp.getKey());

加密函数

输入:

其中:

输出:

对输入的文件加密后,保存到同一文件夹下增加了".tdes"扩展名的文件中.

private void encrypt(File fileIn,String sKey){

try{

FileInputStream fis = new FileInputStream(fileIn);

byte[] bytIn = new byte[(int)fileIn.length()];

for(int i = 0;iFILEIN.LENGTH();I++){

bytIn[i] = (byte)fis.read();

//加密

byte[] bytOut = encryptByDES(encryptByDES(

String fileOut = fileIn.getPath() + ".tdes";

FileOutputStream fos = new FileOutputStream(fileOut);

for(int i = 0;iBYTOUT.LENGTH;I++){

fos.write((int)bytOut[i]);

fos.close();

this,"加密成功!","提示",JOptionPane.OK_OPTION);

}else

}catch(Exception e){

解密函数

对输入的文件解密后,保存到用户指定的文件中.

private void decrypt(File fileIn,String sKey){

String strPath = fileIn.getPath();

else{

this,"不是合法的加密文件!","提示",JOptionPane.OK_OPTION);

return;

JFileChooser chooser = new JFileChooser();

chooser.setCurrentDirectory(new File("."));

chooser.setSelectedFile(new File(strPath));

//用户指定要保存的文件

int ret = chooser.showSaveDialog(this);

if(ret==JFileChooser.APPROVE_OPTION){

//解密

byte[] bytOut = decryptByDES(decryptByDES(

File fileOut = chooser.getSelectedFile();

fileOut.createNewFile();

this,"解密成功!","提示",JOptionPane.OK_OPTION);

this,"解密失败,请核对密码!","提示",JOptionPane.OK_OPTION);

用DES方法加密输入的字节

private byte[] encryptByDES(byte[] bytP,byte[] bytKey) throws Exception{

DESKeySpec desKS = new DESKeySpec(bytKey);

SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");

SecretKey sk = skf.generateSecret(desKS);

Cipher cip = Cipher.getInstance("DES");

cip.init(Cipher.ENCRYPT_MODE,sk);

return cip.doFinal(bytP);

用DES方法解密输入的字节

private byte[] decryptByDES(byte[] bytE,byte[] bytKey) throws Exception{

cip.init(Cipher.DECRYPT_MODE,sk);

return cip.doFinal(bytE);

输入密码的字符形式,返回字节数组形式.

private byte[] getKeyByStr(String str){

for(int i=0;iSTR.LENGTH()

Integer itg =

bRet[i] = itg.byteValue();

return bRet;

输入:0-F

private int getChrInt(char chr){

int iRet=0;

if(chr=="0".charAt(0)) iRet = 0;

if(chr=="1".charAt(0)) iRet = 1;

if(chr=="A".charAt(0)) iRet = 10;

if(chr=="B".charAt(0)) iRet = 11;

return iRet;

文件选择组件.

class FilePanel extends JPanel{

FilePanel(String str){

JLabel label = new JLabel(str);

JButton chooseButton = new JButton("浏览...");

this.add(label);

this.add(fileText);

this.add(chooseButton);

clickAction ca = new clickAction(this);

chooseButton.addActionListener(ca);

public String getFileName(){

JTextField jtf = (JTextField)this.getComponent(1);

return jtf.getText();

private class clickAction implements ActionListener{

clickAction(Component c){

cmpt = c;

int ret = chooser.showOpenDialog(cmpt);

JPanel jp = (JPanel)cmpt;

JTextField jtf = (JTextField)jp.getComponent(1);

jtf.setText(chooser.getSelectedFile().getPath());

private Component cmpt;

密码生成组件.

class KeyPanel extends JPanel{

KeyPanel(String str){

java文件加密代码-图3

JButton chooseButton = new JButton("随机产生");

public String getKey(){

KeyGenerator kg = KeyGenerator.getInstance("DES");

Key ke = kg.generateKey();

byte[] bytK1 = ke.getEncoded();

ke = kg.generateKey();

private String getByteStr(byte[] byt){

String strRet = "";

for(int i=0;iBYT.LENGTH;I++){

//System.out.println(byt[i]);

return strRet;

private String getHexValue(int s){

String sRet=null;

switch (s){

case 0: sRet = "0";break;

case 1: sRet = "1";break;

case 10: sRet = "A";break;

case 11: sRet = "B";break;

return sRet;

JAVA简单文件加密 求JAVA源代码

package com.ncs.pki.util;

import java.security.MessageDigest;

private static MessageDigest digest = null;

public synchronized static final String hash(String data) {

if (digest == null) {

} catch (NoSuchAlgorithmException nsae) {

System.err.println(

+ "Jive will be unable to function normally.");

nsae.printStackTrace();

// Now, compute hash.

digest.update(data.getBytes());

return encodeHex(digest.digest());

public static final String encodeHex(byte[] bytes) {

int i;

for (i = 0; i bytes.length; i++) {

if (((int) bytes[i] 0xff) 0x10) {

buf.append("0");

return buf.toString();

public static String test(){

return null;

* @param args

public static void main(String[] args) {

// TODO Auto-generated method stub

public class DesEncrypt {

*

* 使用DES加密与解密,可对byte[],String类型进行加密与解密 密文可使用String,byte[]存储.

* 方法: void getKey(String strKey)从strKey的字条生成一个Key

* String getEncString(String strMing)对strMing进行加密,返回String密文 String

* getDesString(String strMi)对strMin进行解密,返回String明文

*byte[] getEncCode(byte[] byteS)byte[]型的加密 byte[] getDesCode(byte[]

* byteD)byte[]型的解密

Key key;

* 根据参数生成KEY

* @param strKey

public void getKey(String strKey) {

KeyGenerator _generator = KeyGenerator.getInstance("DES");

_generator.init(new SecureRandom(strKey.getBytes()));

this.key = _generator.generateKey();

_generator = null;

* 加密String明文输入,String密文输出

* @param strMing

* @return

public String getEncString(String strMing) {

byte[] byteMi = null;

byte[] byteMing = null;

String strMi = "";

byteMi = this.getEncCode(byteMing);

} finally {

byteMing = null;

byteMi = null;

return strMi;

* 解密 以String密文输入,String明文输出

* @param strMi

public String getDesString(String strMi) {

String strMing = "";

byteMing = this.getDesCode(byteMi);

return strMing;

* 加密以byte[]明文输入,byte[]密文输出

* @param byteS

private byte[] getEncCode(byte[] byteS) {

byte[] byteFina = null;

Cipher cipher;

cipher = Cipher.getInstance("DES");

byteFina = cipher.doFinal(byteS);

cipher = null;

return byteFina;

* 解密以byte[]密文输入,以byte[]明文输出

* @param byteD

private byte[] getDesCode(byte[] byteD) {

byteFina = cipher.doFinal(byteD);

System.out.println("des demo");

DesEncrypt des = new DesEncrypt();// 实例化一个对像

des.getKey("MYKEY");// 生成密匙

System.out.println("key=MYKEY");

String strEnc = des.getEncString("111111");// 加密字符串,返回String的密文

System.out.println("密文=" + strEnc);

String strDes = des.getDesString(strEnc);// 把String 类型的密文解密

System.out.println("明文=" + strDes);

以上就是土嘎嘎小编为大家整理的java文件加密代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章