• 大小: 19KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: Java
  • 标签: AES  java  type  

资源简介

用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


评论

共有 条评论