如何利用JAVA对文档进行加密和解密处理,完整的java类

如题,但是我要完整的代码,最好能带完整的注释,谢谢,先给100分,如果很好的话在补分

第1个回答  2011-08-03
我以前上密码学课写过一个DES加解密的程序,是自己实现的,不是通过调用java库函数,代码有点长,带有用户界面。需要的话联系我
第2个回答  2018-05-03
使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密。Virbox Protector支持这两种文件格式加密,并且加密用于解析class文件的java.exe,并且可以实现项目源码绑定制定设备,防止部署到客户服务器的项目被整体拷贝。
两种加密方式
War 包加密
当你的项目在没有完成竣工的时候,不适合使用war 文件,因为你的类会由于调试之类的经常改,这样来回删除、创建 war 文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 war 包吧,这个时候一个 war 文件就相当于一个web应用程序;而 jar 文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。
Jar 包加密
在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。Jar包有已知的jar包及自己导出的jar包。
加密流程
我们如何对已知的jar 或者自己导出jar包做加密并给别人使用呢?下面是对简单的加密流程介绍。
War包加密流程
1、打包War包
2、解压War包
3、对java.exe加壳
4、对class文件加密
Jar包加密流程
1、对java.exe加壳
2、对Jar文件进行加密
第3个回答  2011-08-03
我是1楼,代码太长发不上来
留联系方式
第4个回答  推荐于2017-11-24
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.crypto.Cipher;

public class RSAEncrypt {

static KeyPairGenerator keyPairGen;

static KeyPair keyPair;

static RSAPrivateKey privateKey;

static RSAPublicKey publicKey;

static{
try {
keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(512);
keyPair = keyPairGen.generateKeyPair();
// Generate keys
privateKey = (RSAPrivateKey) keyPair.getPrivate();
publicKey = (RSAPublicKey) keyPair.getPublic();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String[] args) {
RSAEncrypt encrypt = new RSAEncrypt();
File file = new File(
"C:\\Documents and Settings\\Administrator.DCB5E0D91E0D436\\桌面\\sdf.txt");
File newFile = new File(
"C:\\Documents and Settings\\Administrator.DCB5E0D91E0D436\\桌面\\sdf1.txt");
encrypt.encryptFile(encrypt, file, newFile);
File file1 = new File(
"C:\\Documents and Settings\\Administrator.DCB5E0D91E0D436\\桌面\\sdf1.txt");
File newFile1 = new File(
"C:\\Documents and Settings\\Administrator.DCB5E0D91E0D436\\桌面\\sdf2.txt");
encrypt.decryptFile(encrypt, file1, newFile1);
}

public void encryptFile(RSAEncrypt encrypt, File file, File newFile) {
try {
InputStream is = new FileInputStream(file);
OutputStream os = new FileOutputStream(newFile);

byte[] bytes = new byte[53];
while (is.read(bytes) > 0) {
byte[] e = encrypt.encrypt(RSAEncrypt.publicKey, bytes);
bytes = new byte[53];
os.write(e, 0, e.length);
}
os.close();
is.close();
System.out.println("write success");
} catch (Exception e) {
e.printStackTrace();
}
}

public void decryptFile(RSAEncrypt encrypt, File file, File newFile) {
try {
InputStream is = new FileInputStream(file);
OutputStream os = new FileOutputStream(newFile);
byte[] bytes1 = new byte[64];
while (is.read(bytes1) > 0) {
byte[] de = encrypt.decrypt(RSAEncrypt.privateKey, bytes1);
bytes1 = new byte[64];
os.write(de, 0, de.length);
}
os.close();
is.close();
System.out.println("write success");

} catch (Exception e) {
e.printStackTrace();
}
}

/** */
/**
* * Encrypt String. *
*
* @return byte[]
*/
protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) {
if (publicKey != null) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}

/** */
/**
* * Basic decrypt method *
*
* @return byte[]
*/
protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj) {
if (privateKey != null) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}

加解密需要依靠以下四个属性,你可以把它存文件,存数据库都无所谓:
static KeyPairGenerator keyPairGen;

static KeyPair keyPair;

static RSAPrivateKey privateKey;

static RSAPublicKey publicKey;

以上只是示例,怎么存放根据自己情况追问

你能具体的注释下么

追答

每一句话都注释?

追问

不用每一句,每个方法注释下,还有就是怎么使用哇,哪个文件时本来存在的,哪个是加密之后的,这个类 我运行了之后,还出现了文档打不开的问题

追答

哦,好的

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.crypto.Cipher;

public class RSAEncrypt {

static KeyPairGenerator keyPairGen;

static KeyPair keyPair;

static RSAPrivateKey privateKey;

static RSAPublicKey publicKey;

static{
try {
//实例类型
keyPairGen = KeyPairGenerator.getInstance("RSA");
//初始化长度
keyPairGen.initialize(512);
//生成KeyPair
keyPair = keyPairGen.generateKeyPair();
// Generate keys
privateKey = (RSAPrivateKey) keyPair.getPrivate();
publicKey = (RSAPublicKey) keyPair.getPublic();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 加密文件
* @param encrypt RSAEncrypt对象
* @param file 源文件
* @param newFile 目标文件
*/
public void encryptFile(RSAEncrypt encrypt, File file, File newFile) ;

/**
* 解密文件
* @param encrypt RSAEncrypt对象
* @param file 源文件
* @param newFile 目标文件
*/
public void decryptFile(RSAEncrypt encrypt, File file, File newFile) ;

/**
* 加密实现
*
* @return byte[] 加密后的字节数组
*/
protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) ;

/**
* 解密实现
*
* @return byte[] 解密后的字节数组
*/
protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj)

我测试了下,.doc .txt均可以加密

因为加密解密均是根据那四个属性来的,所以你需要写个每次运行先读取属性,你可以写入文件
若文件不存在则新生成一组,当加密完成后把四个属性写入文件。
我以上写的只是测试,加解密未分开的

追问

朋友你能帮忙把里面的加密,解密分离开下么,谢谢哇!

本回答被提问者采纳

Java 加密、解密PDF文档
方法1:从官方网站下载Jar包,解压后,将lib文件夹下的jar文件导入Java程序。方法2:通过Maven导入。详细步骤参考。以下是加密PDF文档的Java代码示例:编写并运行代码后,生成加密文档。输入密码后,可以查看加密文档的效果。同时,本文提供了解除PDF密码保护的代码示例。总结,通过Java编程,您可以灵活地对PDF...

Java 加密、解密PPT文档
在处理文档加密与解密时,常借助设置文档打开密码和启用文档编辑时的权限密码等方式。通过Java编程实现加密、解密PPT文档,是一种高效且灵活的解决方案。下面,我们将使用Free Spire.Presentation for Java(免费版)工具来完成此任务。为了实现此功能,首先需要获取并导入相关Jar文件。一种方法是直接从官网下载...

请问用java如何对文件进行加密解密?
\/** * 加密--把加密后的byte数组先进行二进制转16进制在进行base64编码 * @param sSrc * @param sKey * @return * @throws Exception *\/ public static String encrypt(String sSrc, String sKey) throws Exception { if (sKey == null) { throw new IllegalArgume...

如何在Java中加密和解密zip文件?
使用addFolder替换addFile方法,即可压缩文件夹。创建分割压缩文件,利用createSplitZipFile或createSplitZipFileFromFolder方法,设置splitLength字节单位。提取所有文件使用extractAll方法从compressed.zip文件中。提取单个文件则通过extractFile方法实现。综上所述,通过Zip4j库,我们掌握了在Java中创建受密码保护的zi...

使用java做一个加密和隐藏文件的软件,具体需要怎么做求指导
如果能找到这样一个算法,可以对于文件使用二进制的读写(Binary I\/O),然后每读到一定大小的数据就进行加密运算,并写入目标加密文件中。如果是解密则是读取数据进行解密运算。题外话:我觉得实际上做这样一个软件也没有必要,每次存取文件都需要进行大量的计算操作,也很容易破坏cache的局部性原理。如果...

如何通过JAVA对电脑中的文本文档进行加密,最好能够详细的说一下!
import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import javax.crypto.Cipher;public class RSAEncrypt { private KeyPairGenerator keyPairGen;private KeyPair keyPair;private RSAPrivateKey privateKey;private RSAPublicKey publicKey;public RSAEncrypt() { try...

JAVA 文本文件用异或算法进行加密解密的程序代码!
所以简单点,这里的加解密都用一个函数就行了 param src param dest throws Exception \/ public static void xorEn(File src, File dest) throws Exception { \/\/ 文件不存在或为文件夹就不判断了 FileInputStream fis = new FileInputStream(src);FileOutputStream fos = new FileOutputStream(dest...

如何使用JAVA实现对字符串的DES加密和解密
请参考文章:http:\/\/blog.csdn.net\/shibenjie\/article\/details\/5365355

Java 接口数据加密和解密
步骤如下:1. 从gitee.com\/zhao_jian_jun...拉取代码至本地。2. 使用meavn的install将项目打包为.jar文件。3. 将加解密依赖引入至项目中。4. 在配置文件中说明使用的加密方式的秘钥。RSA为非对称加密,需提供两个秘钥。变量名如下:5. 对请求相应结果加密,使用@ZjjEncryptResponse注解并指定加密...

Java 中如何加密配置文件中的数据库账号和密码?
在引入jasypt前,通常会直接在配置文件中使用明文账号密码。例如,`UserController.java`和`UserMapper.java`文件中会直接引用这些信息。当启动服务并调用查询接口时,数据获取流程正常运行。为了增加安全性,我们将采用jasypt进行加密处理。引入jasypt后,加密账号密码的过程分为三个步骤。首先,需要确保在配置...

相似回答