java 文件加密解密


  1 package com.test;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileOutputStream;
6 import java.io.InputStream;
7 import java.io.OutputStream;
8 import java.security.KeyPair;
9 import java.security.KeyPairGenerator;
10 import java.security.NoSuchAlgorithmException;
11 import java.security.interfaces.RSAPrivateKey;
12 import java.security.interfaces.RSAPublicKey;
13 import javax.crypto.Cipher;
14
15 public class RSAEncrypt {
16
17 static KeyPairGenerator keyPairGen;
18
19 static KeyPair keyPair;
20
21 static RSAPrivateKey privateKey;
22
23 static RSAPublicKey publicKey;
24
25 static {
26 try {
27 keyPairGen = KeyPairGenerator.getInstance("RSA");
28 keyPairGen.initialize(512);
29 keyPair = keyPairGen.generateKeyPair();
30 // Generate keys
31 privateKey = (RSAPrivateKey) keyPair.getPrivate();
32 publicKey = (RSAPublicKey) keyPair.getPublic();
33 } catch (NoSuchAlgorithmException e) {
34 // TODO Auto-generated catch block
35 e.printStackTrace();
36 }
37 }
38
39 public static void main(String[] args) {
40 RSAEncrypt encrypt = new RSAEncrypt();
41 File file = new File("C:\\Users\\张洋\\Desktop\\logo1.png");
42 File newFile = new File("C:\\Users\\张洋\\Desktop\\logo已加密");
43 encrypt.encryptFile(encrypt, file, newFile);
44 File file1 = new File("C:\\Users\\张洋\\Desktop\\logo已加密");
45 File newFile1 = new File("C:\\Users\\张洋\\Desktop\\logo已解密.png");
46 encrypt.decryptFile(encrypt, file1, newFile1);
47 }
48
49 public void encryptFile(RSAEncrypt encrypt, File file, File newFile) {
50 try {
51 InputStream is = new FileInputStream(file);
52 OutputStream os = new FileOutputStream(newFile);
53
54 byte[] bytes = new byte[53];
55 while (is.read(bytes) > 0) {
56 byte[] e = encrypt.encrypt(RSAEncrypt.publicKey, bytes);
57 bytes = new byte[53];
58 os.write(e, 0, e.length);
59 }
60 os.close();
61 is.close();
62 System.out.println("write success");
63 } catch (Exception e) {
64 e.printStackTrace();
65 }
66 }
67
68 public void decryptFile(RSAEncrypt encrypt, File file, File newFile) {
69 try {
70 InputStream is = new FileInputStream(file);
71 OutputStream os = new FileOutputStream(newFile);
72 byte[] bytes1 = new byte[64];
73 while (is.read(bytes1) > 0) {
74 byte[] de = encrypt.decrypt(RSAEncrypt.privateKey, bytes1);
75 bytes1 = new byte[64];
76 os.write(de, 0, de.length);
77 }
78 os.close();
79 is.close();
80 System.out.println("write success");
81
82 } catch (Exception e) {
83 e.printStackTrace();
84 }
85 }
86
87 /** */
88 /**
89 * * Encrypt String. *
90 *
91 * @return byte[]
92 */
93 protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) {
94 if (publicKey != null) {
95 try {
96 Cipher cipher = Cipher.getInstance("RSA");
97 cipher.init(Cipher.ENCRYPT_MODE, publicKey);
98 return cipher.doFinal(obj);
99 } catch (Exception e) {
100 e.printStackTrace();
101 }
102 }
103 return null;
104 }
105
106 /** */
107 /**
108 * * Basic decrypt method *
109 *
110 * @return byte[]
111 */
112 protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj) {
113 if (privateKey != null) {
114 try {
115 Cipher cipher = Cipher.getInstance("RSA");
116 cipher.init(Cipher.DECRYPT_MODE, privateKey);
117 return cipher.doFinal(obj);
118 } catch (Exception e) {
119 e.printStackTrace();
120 }
121 }
122 return null;
123 }
124 }

java 文件加密解密

时间: 2024-10-10 13:30:17

java 文件加密解密的相关文章

C# Java DES加密解密

c#代码: public class DESHelper    {          /// <summary>        /// DES加密算法        /// </summary>        /// <param name="encryptString">要加密的字符串</param>        /// <param name="sKey">加密码Key</param>  

C# 实现 JAVA AES加密解密[原创]

以下是网上普遍能收到的JAVA AES加密解密方法. 因为里面用到了KeyGenerator 和 SecureRandom,但是.NET 里面没有这2个类.无法使用安全随机数生成KEY. 我们在接收JAVA发送的AES加密字符串后,在.NET没有对应的KeyGenerator 和 SecureRandom去生成AES 的 KEY值,导致无法直接解密. 1 import java.security.SecureRandom; 2 import java.util.Base64; 3 4 impor

java AES加密解密

近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一:AES可以使用128.192.和256位密钥,并且用128位分组加密和解密数据.本文就简单介绍如何通过JAVA实现AES加密. 因为在做接口 webservice的时候接受穿过的数据 是xml 加密为二进制 byte[]   下面直接看代码 : import java.io.UnsupportedEncodingException; import java.

java文本文件加密解密类

原文:http://www.open-open.com/code/view/1420031154765 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.security.*; import javax.crypto.*; import javax.crypto.spec.*; /** * 文本文件加密解密类 * * 文件名:FileEncrypter.j

android 中文件加密 解密 算法实战

现在项目里面有一个需求,本项目里面下载的视频和文档都不允许通过其他的播放器播放,在培训机构里面这样的需求很多.防止有人交一份钱,把所有的课件就拷给了别人.这样的事情培训机构肯定是不愿意的.现在我项目里面也出了这么个需求.下面介绍一下我的实现. 思路: 首先下载文件,这个就不说了,java代码写个下载管理器. 下载完成后存储文件的时候不是直接存储,要加密存储,加密方法是将文件的每个字节与这个字节在流中的下标做异或运算. 在我们项目里面播放的时候要解密,方法也是将文件的每个字节与这个字节在流中的下标

C#-java RSA加密解密

using Org.BouncyCastle.Math;using Org.BouncyCastle.Crypto.Parameters;using Org.BouncyCastle.Security;using Org.BouncyCastle.Asn1.X509;using Org.BouncyCastle.X509;using Org.BouncyCastle.Asn1.Pkcs;using Org.BouncyCastle.Pkcs;using System;using System.S

RSA AES 前端JS与后台JAVA的加密解密的是实现

AES CryptoJS 前提是编码方式,key,vi中设置一样,就可以进行跨语言加密解密 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 <link rel="stylesheet" href="<%=

C# Java 3DES加密解密 扩展及修正\0 问题

注: C#已亲测及做扩展, Java 部分未做验证 /// <summary> /// 3DES加密解密 /// ----------------------------------------------------------- /// 说明: /// 转载自网上http://bbs.csdn.net/topics/350158619 /// 并加以扩展 /// 修正: /// 1. 修改正解密后出现 '\0' /// 注: 1. 向量不能小于8位 /// 2. 明文末尾如果是带'\0'字

文件加密解密全解

using System.Security.Cryptography;using System.IO;using System.Text;using System;using System.Collections.Generic;using System.Windows.Forms;namespace KingBoy.KBFileCryp{    /// <summary>    /// 文件加密    /// </summary>    class CrypToFile    {