资源简介
用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 JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
- 一元多项式相加 java实现
评论
共有 条评论