资源简介
用java实现的,密钥长度为128的AES算法,并且支持任意格式的文件!
代码片段和文件信息
package li;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class AES {
private static AESFunc aesFun = new AESFunc();
/**
* 针对txt
* @param openFile 要加密的文件
* @param saveFile 加密后的文件
* @param state 明文
* @param key 密钥
* @param Nb是加密时明文的分组长度(以32bit为单位);
* @param Nk是密钥的长度(以32bit为单位);
* @return 字节数
* @throws IOException
*/
public static int encrypt(String openFileString saveFileString keyint Nbint Nk) throws IOException
{
int Nr = 10 ; //轮密钥加的轮数
File saveF = new File(openFile);
if((!saveF.exists()) || saveF.isDirectory())
return 0;
//以二进制读的方式打开要加密的文件;
//以二进制写的方式打开保存密文的文件;
FileInputStream fp1 = new FileInputStream(openFile);
FileOutputStream fp2 = new FileOutputStream(saveFiletrue);
int Length = fp1.available(); //得到要加密的文件的长度;
if(Length==0)return 0; //内容为空则直接返回
int leave = Length%(4*Nb); //求剩余的字块的字节数;
long rounds = Length/(4*Nb); //得到整块的加密轮数;
byte[] state = new byte[4*4]; //作为加密时存放要加密的明文块;
// byte[] copy = new byte[4*4]; //用来进行短块处理时的缓存区;
char [] w = new char[16*11];//存放密钥
aesFun.keyExpan(key w);//生成各轮子密钥
while(rounds>0) //以下处理的明文是分组的整数倍的情况;
{
fp1.read(state04*Nb);
state = aesFun.encrypt(aesFun.byteTOchar(state) w Nr);
fp2.write(state04*Nb);
rounds--;
}
if( leave !=0 ) //明文是分组的整数倍的处理完毕 处理非整数部分
{
fp1.read(state0leave);//明文的长度小于八个字符;
for(int i=leave;i<4*Nb;i++)
state[i]=0; //后面用空格补齐;
state = aesFun.encrypt(aesFun.byteTOchar(state) w Nr);
fp2.write(state04*Nb);
}
return Length;//返回文件长度;
}
/**
* 针对txt
* @param openFile 要解密的文件
* @param saveFile 解密后的文件
* @param state 密文
* @param key 密钥
* @param Nb 是加密时明文的分组长度(以32bit为单位);
* @param Nk 是密钥的长度(以32bit为单位);
* @return 字节数
* @throws IOException
*/
public static int decrypt(String openFileString saveFileString keyint Nbint Nk) throws IOException
{
int Nr = 10 ; //轮密钥加的轮数
File openF = new File(openFile);
if((!openF.exists()) || openF.isDirectory())
return 0;
//以二进制读的方式打开要加密的文件;
//以二进制写的方式打开保存密文的文件;
FileInputStream fp1 = new FileInputStream(openFile);
FileOutputStream fp2 = new FileOutputStream(saveFiletrue);
int Length = fp1.available(); //得到要加密的文件的长度;
if(Length==0)return 0; //内容为空则直接返回
long rounds = Length/(4*Nb); //得到整块的加密轮数;
byte[] state = new byte[4
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 307 2015-11-28 16:53 MyUtilitiesMyUtilities支持任意格式的文件\.classpath
文件 387 2015-11-28 16:53 MyUtilitiesMyUtilities支持任意格式的文件\.project
文件 629 2015-11-28 16:53 MyUtilitiesMyUtilities支持任意格式的文件\.settings\org.eclipse.jdt.core.prefs
文件 2276 2015-12-02 16:30 MyUtilitiesMyUtilities支持任意格式的文件\bin\li\AES.class
文件 4273 2015-12-01 15:01 MyUtilitiesMyUtilities支持任意格式的文件\bin\li\AESFunc.class
文件 7984 2015-12-01 14:53 MyUtilitiesMyUtilities支持任意格式的文件\bin\li\AESTables.class
文件 5087 2015-12-02 16:28 MyUtilitiesMyUtilities支持任意格式的文件\bin\li\AESView.class
文件 4025 2015-12-02 16:30 MyUtilitiesMyUtilities支持任意格式的文件\src\li\AES.java
文件 7015 2015-12-01 15:01 MyUtilitiesMyUtilities支持任意格式的文件\src\li\AESFunc.java
文件 6034 2015-12-01 14:53 MyUtilitiesMyUtilities支持任意格式的文件\src\li\AESTables.java
文件 4267 2015-12-02 16:28 MyUtilitiesMyUtilities支持任意格式的文件\src\li\AESView.java
目录 0 2015-12-02 16:33 MyUtilitiesMyUtilities支持任意格式的文件\bin\li
目录 0 2015-12-02 16:33 MyUtilitiesMyUtilities支持任意格式的文件\src\li
目录 0 2015-12-02 16:33 MyUtilitiesMyUtilities支持任意格式的文件\.settings
目录 0 2015-12-02 16:33 MyUtilitiesMyUtilities支持任意格式的文件\bin
目录 0 2015-12-02 16:33 MyUtilitiesMyUtilities支持任意格式的文件\src
目录 0 2015-12-02 16:33 MyUtilitiesMyUtilities支持任意格式的文件
----------- --------- ---------- ----- ----
42284 17
- 上一篇:android游戏源代码之魔塔2013
- 下一篇:java五子棋游戏课程设计含源代码
相关资源
- java五子棋游戏课程设计含源代码
- java课程设计学生信息管理系统
- 基于贝叶斯算法的JavaMail垃圾邮件过滤
- java实现C/S模式聊天室
- Java 数字签名和验证
- 几个推荐算法的java实现
- java 图书借阅管理系统 课程设计
- Java健身俱乐部管理系统Client + Server
- java聊天程序使用eclipse开发
- JAVA程序设计课程设计-商场VIP消费管理
- 李兴华java word版全部笔记
- java版的日历查看器 + 备忘录
- java RFID 源代码开发
- 阿里巴巴 Java 开发手册2018最新版
- java 聊天程序 基于SWING的GUI界面
- Java零基础开发桌球小游戏项目(完整
- Java写的木马程序源码,仅供学习参考
- java实现简单通讯录
- java聊天室程序设计报告
- java语言点名系统
- java语言仿真CPU5级流水线源码+报告
- java毕业设计参考文献
- 足球游戏Java
- voronoi泰森多边形算法和delaunay triang
- java写的雷电(代码+论文+幻灯片+效果
- 一个机遇JAVA Web的websocket
- 一个java编写的简易计算器源码 实现简
- 基于网页1对多的聊天室java+servlet+js
- java socket 聊天系统
- java接入微信APP支付/支付宝APP支付
评论
共有 条评论