`
小懒蛋
  • 浏览: 31428 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java IO 加密解密小例子

阅读更多
一定要关流,完了。
import java.io.BufferedReader;
import java.io.FileInputStream;
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.NoSuchAlgorithmException;

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

public class T {

static String fileA = "D:/a.txt";
static String fileB = "D:/b.txt";
private static final byte[] KEY = { 37, -82, 88, -42, 1, -36, -104, -125,
4, 81, -75, -94, -33, -75, 110, -3, -32, 64, -48, -105, -43, -113,
104, 32 };

public static void main(String[] args) throws IOException,
InvalidKeyException, NoSuchAlgorithmException,
NoSuchPaddingException {
String sourceString = doReadNoDes(fileB);
doWrite(sourceString, fileA);
System.out.println(doRead(fileA));

}

private static String doRead(String file) throws InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException, IOException {
FileInputStream input = null;
try {
input = new FileInputStream(file);
return read(input);
} finally {
input.close();
}
}

private static void doWrite(String sourceString, String file)
throws IOException, InvalidKeyException, NoSuchAlgorithmException,
NoSuchPaddingException {
FileOutputStream output = null;
try {
output = new FileOutputStream(file);
write(output, sourceString);
} finally {
output.close();
}
}

private static String doReadNoDes(String file) throws IOException {
FileInputStream input = null;
try {
input = new FileInputStream(file);
return getStringFromStream(input);
} finally {
input.close();
}

}

private static String read(InputStream input)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IOException {
CipherInputStream cin = null;
try {
SecretKey key = getKey();
Cipher cp = Cipher.getInstance("DESede");
cp.init(Cipher.DECRYPT_MODE, key);
cin = new CipherInputStream(input, cp);
return getStringFromStream(cin);
} finally {
cin.close();
}
}

private static void write(OutputStream output, String sourceString)
throws IOException, NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException {
CipherOutputStream cin = null;
try {
SecretKey key = getKey();
Cipher cp = Cipher.getInstance("DESede");
cp.init(Cipher.ENCRYPT_MODE, key);
cin = new CipherOutputStream(output, cp);
cin.write(sourceString.getBytes());
} finally {
cin.close();
}
}

private static SecretKey getKey() {
return new SecretKeySpec(KEY, "DESede");
}

private static String getStringFromStream(InputStream stream) {
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = null;
while ((line = in.readLine()) != null) {
buffer.append(line);
}
return buffer.toString();
} catch (IOException e) {
throw new RuntimeException(e);
}
}

}

分享到:
评论

相关推荐

    Java中对字符串进行加密和解密

    下面是一个使用DES算法实现的加密解密工具类的例子: ```java import java.io.*; import javax.crypto.*; import javax.crypto.spec.*; import java.security.*; import java.security.spec.*; import ...

    DES加密方法JAVA和C#交叉加密解密代码

    总之,理解和实现Java与C#之间的DES加密解密代码是跨平台数据安全的关键步骤。确保一致性、正确处理边界条件和异常,以及选择适当的加密模式和密钥管理策略,都是实现这一目标的关键因素。同时,随着技术的发展,...

    C#程序Mac地址AES加密及解密

    通过这个小工具,用户能够方便地获取Mac地址并使用AES加密技术进行保护,确保Mac地址不会被轻易暴露,从而提升了网络安全。这种加密方法在许多场景下都十分有用,比如在设备认证、网络通信或者敏感数据存储等方面。

    java加密文件

    在Java中,我们可以利用内置的Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE) 来实现文件的加密和解密。下面我们将深入探讨如何通过Java代码来对本地文件进行加密。 1. **Java ...

    Java 小例子合集 demo

    在本Java小例子合集中,我们涵盖了多个关键的编程概念和技术,这些都是在IT行业中至关重要的。以下是这些示例代码所涉及的知识点的详细说明: 1. **AES加密与解密**: AES(Advanced Encryption Standard)是现代...

    java源码包---java 源码 大量 实例

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    20200415文件的加密与解密.rar

    本课程针对初学者,旨在深入讲解Java中如何利用IO流进行文件操作,并实现文件的加密与解密。 首先,我们需要了解Java中的IO流。IO流是Java提供的处理输入输出数据的一种机制,分为字节流和字符流两大类。字节流处理...

    RSA加密-java

    下面是一个具体的例子,展示了如何生成RSA密钥对并使用这些密钥进行加解密操作。 ```java import java.io.*; import java.security.*; import javax.crypto.Cipher; public class RSATool { public static void ...

    java实现用密码加密压缩文件

    在我们的例子中,我们将使用AES(高级加密标准)算法,它是一种广泛使用的对称加密方法,效率高且安全性强。 要使用Java对ZIP文件进行加密,我们首先需要创建一个带有密码的ZIP输出流。这可以通过包装...

    Java源码包100个设计实例.zip

    Java加密解密工具集 JCT v1.0源码包.rar Java半透明图片实现的步骤及源代码.rar Java右键弹出菜单源码 Java吃豆子游戏源代码.rar Java图片加水印,支持旋转和透明度设置 Java圆形按钮实例代码,含注释 Java圆形电子...

    java源码包3

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    java源码包2

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    AES.rar_AES_AES 加密_AES文件加密_encrypting with java

    这个例子展示了如何使用Java进行AES文件加密。然而,实际应用中还应考虑其他因素,如密钥的管理和安全存储,以及更安全的加密模式(如CBC模式)和密钥交换协议(如Diffie-Hellman)。 总结来说,AES加密是一种强大...

    OneTimePadCrypt:用 Java 编写的简单一次性加密和解密

    它的安全性基于两个主要原则:密钥的随机性和唯一性。...通过这个项目,开发者可以深入了解如何在Java中实现安全的加密解密机制,并接触到软件开发的多个方面,包括输入输出、错误处理、用户界面和版本控制。

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

    Java异或技操作给任意的文件加密原理及使用详解

    Java异或技操作给任意的文件加密原理及使用详解 本文主要介绍了Java异或技操作给任意的文件加密原理及使用详解,具有一定借鉴价值,需要的朋友可以参考下。 异或操作 异或是一种基于二进制的位运算,用符号XOR...

    java源码包4

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

    JAVA上百实例源码以及开源项目源代码

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

    java文件管理器

    5. **加密解密文件**: 文件的加密通常涉及到对称加密算法(如AES)或非对称加密算法(如RSA)。在Java中,可以使用`javax.crypto`包下的类,如`Cipher`进行加密和解密操作。首先,创建一个`Cipher`实例,设置加密/...

Global site tag (gtag.js) - Google Analytics