資源簡介
用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五子棋游戲課程設計含源代碼
評論
共有 條評論