永发信息网

怎么才能让AES解密在不同的jdk下通用

答案:2  悬赏:0  手机版
解决时间 2021-04-02 21:11
怎么才能让AES解密在不同的jdk下通用
最佳答案
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;

import javax.crypto.*;
import javax.crypto.spec.*;


public class AES {

static final String algorithmStr="AES/ECB/PKCS5Padding";

static private KeyGenerator keyGen;

static private Cipher cipher;

static boolean isInited=false;

//初始化
static private void init()
{

//初始化keyGen
try {
keyGen=KeyGenerator.getInstance("AES");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
keyGen.init(128);

//初始化cipher
try {
cipher=Cipher.getInstance(algorithmStr);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

isInited=true;
}

public static byte[] GenKey()
{
if(!isInited)//没初始化,则初始化
{
init();
}
return keyGen.generateKey().getEncoded();
}

public static byte[] Encrypt(byte[] content,byte[] keyBytes)
{
byte[] encryptedText=null;

if(!isInited)//初始化
{
init();
}

Key key=new SecretKeySpec(keyBytes,"AES");

try {
cipher.init(Cipher.ENCRYPT_MODE, key);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
encryptedText=cipher.doFinal(content);
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return encryptedText;
}

//解密byte[]
public static byte[] DecryptToBytes(byte[] content,byte[] keyBytes)
{
byte[] originBytes=null;
if(!isInited)
{
init();
}

Key key=new SecretKeySpec(keyBytes,"AES");

try {
cipher.init(Cipher.DECRYPT_MODE, key);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//解密
try {
originBytes=cipher.doFinal(content);
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return originBytes;
}
}
全部回答
AES本身通用算, 能Base64编码候字符串编码格式才导致相同(UTF-8, GBK)编码
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
JackWolfskin狼爪专卖店地址有知道的么?有点
长安的标致后面有英文很大气,字母以P字开头,
传诵与传颂有什么区别
怎么看待离婚后找对象的自卑问题
桔普茶的桔普茶由来
电脑升到win10后怎么设置切换AMD显卡?
爹搓搓一个娘搓搓一窝是什么意思
ati4800显卡性能怎么样
求合唱的动漫图片
韩绮绣怎么样的?
m4*0.7外螺纹能否拧入m4*0.75
臭氧和氧气相互转化到底有什么好争的
借条%24利息是什么
苹果手机不能显示动态图片和不能用动态壁纸么
吴克坚的人物简介
推荐资讯
这是什么植物?怎么养?买的时候据说是椰子,
led净化灯和 led平板洁净灯的区别是什么
单选题2000年6月26日,人类基因组“工作框架
外婆生日的祝福语
野生灰蘑菇长什么样
别挤啦全文意思
网站上传后打开时就是提示““/”应用程
多肉植物胖美人又叫什么
韩国内乱是不是中国操作
个人拿支付宝的商户订单号能查询什么信息
福建标致3082.0怎么样
怎样把菜做的很麻很麻……
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?