• 大小: 68KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: Java
  • 标签: AES  

资源简介

本组代码采用标准AES算法(基础算法引用ElAES.pas,感谢作者),代码支持AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充,Delphi与JAVA互相加解密。

资源截图

代码片段和文件信息

package aes;
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class AESTest {

public static void main(String args[]) throws UnsupportedEncodingException InvalidAlgorithmParameterException{
System.out.println(System.getProperty(“file.encoding“));

//加密内容
String content = “密码学中的高级加密标准(AdvancedEncryptionStandard,AES)。“;
//String content = “test123456“;
//为与Delphi编码统一,将字符转为UTF8编码(其他语言也相同)
//String ss=new String(content.getBytes()“UTF-8“);
//密钥
String password = “1234567890123456“;
        System.out.println(“加密前:“ + content);
        byte[] encryptResult = encrypt(content password32); //16位密钥长度128位、24位密钥长度192、32位密钥长度256(在delphi中对应kb128、kb192、快播56)
        System.out.println(“加密后:“ + parseByte2HexStr(encryptResult));//将加密后编码转为16进制编码
 
        byte[] decryptResult = decrypt(encryptResultpassword32);
        System.out.println(“解密后:“ + new String(decryptResult));    
}


    /**
     * 加密
     * 
     * @param content 需要加密的内容
     * @param password  加密密码
     * @param keySize 密钥长度162432
     * @return
     * @throws UnsupportedEncodingException 
     * @throws InvalidAlgorithmParameterException 
     */

    public static byte[] encrypt(String content String password int keySize) throws UnsupportedEncodingException InvalidAlgorithmParameterException {
            try {                              
             //密钥长度不够用0补齐。
         SecretKeySpec key = new SecretKeySpec(ZeroPadding(password.getBytes() keySize) “AES“);
         //定义加密算法AES、算法模式ECB、补码方式PKCS5Padding
                //Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding“);
         //定义加密算法AES 算法模式CBC、补码方式PKCS5Padding
                Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding“);
                //CBC模式模式下初始向量 不足16位用0补齐
                IvParameterSpec iv = new IvParameterSpec(ZeroPadding(“1234567890123456“.getBytes()16));
                byte[] byteContent = content.getBytes();  
                //初始化加密
                //ECB
                //cipher.init(Cipher.ENCRYPT_MODE key);
                //CBC 
cipher.init(Cipher.ENCRYPT_MODE keyiv);                
                byte[] result = cipher.doFinal(byteContent);
                return result; 
            } catch (NoSuchAlgorithmException e) {
                    e.printStackTrace();
            } catch (NoSuchPaddingException e) {
                    e.printStackTrace();
            } catch (InvalidKeyException e) {
                    e.printStackTrace();
            } catch (IllegalBlockSizeException e) {
            

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-03-30 20:26  JAVA\
     文件        6730  2016-03-30 20:39  JAVA\AESTest.java
     文件         598  2016-03-30 20:45  Readme.txt
     目录           0  2016-03-30 20:23  Delphi\
     文件         274  2016-03-23 15:49  Delphi\AesTest.dpr
     文件       27916  2016-03-24 12:54  Delphi\AesTest.dproj
     文件        1201  2016-03-24 12:54  Delphi\AesTest.dproj.local
     文件         155  2016-03-29 16:21  Delphi\AesTest.identcache
     文件       58468  2016-03-24 13:10  Delphi\AesTest.res
     文件         176  2016-03-29 16:21  Delphi\AesTest.stat
     文件      139553  2015-08-19 09:06  Delphi\ElAES.pas
     文件        8654  2016-03-30 20:00  Delphi\JDAESExtend.pas
     文件        2589  2015-08-19 09:06  Delphi\untAES.pas
     文件        3809  2016-03-29 15:19  Delphi\untTest.dfm
     文件        3991  2016-03-30 19:50  Delphi\untTest.pas

评论

共有 条评论