资源简介
本组代码采用标准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
相关资源
- AES 对所有格式文件加解密
- 一个采用AES算法的加密模块和调用V
- zip文件256bit的AES加密解密
- java使用AES加密/解密文件
- AES加解密JS文件
- AES For Delphi And Java V2.0.0.0.rar
- AES256加密工具类,及其所必须的jar包
- c++ AES 兼容 JAVA AES CBC PKCS5Padding C#
- UnlimitedJCEPolicy --JCE策略文件包含适用
- AES算法实现文件的加密解密(Java语言
- java MD5,AES及 六位随机码生成
- AESHelper 工具类
- 微信小程序 AES加密 ECB模式js文件
- Android-ndk-jni AES加解密 C++
- 基于openssl的AES256 的CBC模式的加解密处
- AESjava底层实现原理代码实现。。。。
- AES/DES 对称加密算法
-
AES+ba
se64加密解密工具类 - RSA、AES混合加密解密,Java工程、安卓
- AES加密解密iOSAndroidJava.Net通用
- 解决aes加密限制.zip
- apk加解密工具类
- java AES加密/解密算法
- Java AES128加密解密 (AES/ECB/PKCS7Paddin
-
java加密、解密Sha/Md5/AES/ba
se64
评论
共有 条评论