急急!异常java.security.InvalidKeyException:No installed provider supports this key

love_xiaobai 2011-05-30 09:33:45
我的jsp页面:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="org.des.dmw.*" %>
<%@ page import="org.des.factory.*" %>
<%@ page import="java.security.*" %>
<%@ page import="javax.crypto.*" %>
<html>
<head>
<title>Jiami.jsp</title>
</head>

<body>
<center>
<%
request.setCharacterEncoding("gb2312");
%>
<%
String text = request.getParameter("plaintext");
String key = request.getParameter("key");
DesFactory.getDesEncryptInstance().getKey(key);
String strEnc = DesFactory.getDesEncryptInstance().getEncString(text);
%>

<form action="Jiemi.jsp" method="post">
<table border="1">

<tr>
<td>输出密文:</td>
<td><%=strEnc%></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="解密">
<input type="reset" value="重置">
</td>
</tr>
</form>


</center>
</body>
</html>

DES算法程序:
package org.des.dmw;

import java.security.*;
import javax.crypto.*;

public class DesEncrypt
{
Key key ;
public void getKey(String strKey)
{
try
{
KeyGenerator generator = KeyGenerator.getInstance("DES") ;
generator.init(new SecureRandom(strKey.getBytes()));
this.key = generator.generateKey();
generator = null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
public String getEncString(String strMing)
{
byte[] byteMi = null;
byte[] byteMing = null;
String strMi = "";
try
{
return byte2hex(getEncCode(strMing.getBytes()));
}catch(Exception e)
{
e.printStackTrace();
}
finally{
byteMing = null;
byteMi = null;
}
return strMi;

}
public String getDesString(String strMi)
{
byte[] byteMing = null;
byte[] byteMi = null;
String strMing = "";
try{
return new String(getDesCode(hex2byte(strMi.getBytes())));
}catch(Exception e)
{
e.printStackTrace();
}finally
{
byteMing = null;
byteMi = null;
}
return strMing;
}
private byte[] getEncCode(byte[] byteS)
{
byte[] byteFina = null;
Cipher cipher;
try{
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byteFina = cipher.doFinal(byteS);
}catch(Exception e)
{
e.printStackTrace();
}finally
{
cipher = null;
}
return byteFina;
}
private byte[] getDesCode(byte[] byteD)
{
Cipher cipher;
byte[] byteFina = null;
try{
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byteFina = cipher.doFinal(byteD);
}catch(Exception e)
{
e.printStackTrace();
}finally
{
cipher = null;
}
return byteFina;
}
public static String byte2hex(byte[] b)
{
//转成16进制字符串
String hs = "";
String stmp = "";
for(int n=0;n<b.length;n++)
{
//整数转成 十六进制表示
stmp = (java.lang.Integer.toHexString(b[n]&0XFF));
if(stmp.length()==1)
hs = hs + "0" +stmp;
else
hs = hs + stmp;
}
return hs.toUpperCase();//转成大写
}
public static byte[] hex2byte(byte[] b)
{
if((b.length%2)!=0)
throw new IllegalArgumentException("长度表示偶数");
byte[] b2 = new byte[b.length/2];
for(int n=0;n<b.length;n+=2)
{
String item = new String(b,n,2);
//两位一组,表示一个字节,把这样表示的十六进制字符串,还原成一个进制字节
b2[n/2] = (byte)Integer.parseInt(item,16);
}
return b2;
}

}

另外写了一个工厂类:
package org.des.factory;

import org.des.dmw.*;

public class DesFactory
{
public static DesEncrypt getDesEncryptInstance()
{
return new DesEncrypt();
}
}

但在jsp前台显示时总是出现java.security.InvalidKeyException: No installed provider supports this key: (null)
急急急!求高手解答 谢谢 我们的大作业过几天就要交了
...全文
2321 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang12 2011-07-07
  • 打赏
  • 举报
回复
表示你的机器上没有DES加密算法的实现
coolfoxzlz 2011-07-07
  • 打赏
  • 举报
回复
关注一下。
内容概要:本文围绕基于物理场的动态模式分解(piDMD)展开研究,重点探讨其在流体力学、热传导及多物理耦合系统中的建模与应用。通过Matlab代码实现,将传统的动态模式分解(DMD)方法与物理场控制方程相结合,引入物理约束以增强数据驱动模型的物理一致性,从而提升对复杂非线性系统的模态提取精度与长期预测能力。文章系统阐述了piDMD的理论基础、数学推导过程与算法实现步骤,并结合典型物理场仿真案例(如Navier-Stokes方程驱动的流场演化)进行验证,展示了其在降阶建模、主导模态识别和时空动态可视化方面的优越性能,适用于高维、强耦合、非平稳系统的分析与优化。; 适合人群:具备一定数值计算、流体力学、控制理论或数据驱动建模背景,熟悉Matlab编程与线性代数运算,从事科学研究、工程仿真或系统辨识工作的研究生、科研人员及工程师。; 使用场景及目标:①实现对流场、温度场等物理场的高效降阶建模与动态行为预测;②提取符合物理规律的关键模态,用于系统稳定性分析与控制设计;③支撑复杂系统的状态估计、异常检测与优化调控等下游任务。; 阅读建议:建议读者结合提供的Matlab代码逐行调试与运行,深入理解piDMD算法中物理约束的嵌入方式及其对模态质量的影响,同时可尝试将其迁移至其他偏微分方程描述的物理系统中进行拓展验证与应用。
内容概要:本文研究了在峰谷分时电价引导下,基于多目标优化遗传算法NSGA-II的电动汽车充电负荷优化问题。通过构建以电网负荷波动最小化和用户充电成本最低为核心的多目标优化模型,利用NSGA-II算法求解获得帕累托最优解集,实现对大规模电动汽车充电行为的有序引导。文中系统阐述了峰谷电价激励机制的设计原理、电动汽车充电负荷的数学建模方法、多目标优化问题的形式化表达以及NSGA-II算法的具体实现流程,并借助Matlab平台进行仿真验证,结果表明该策略能有效平抑电网负荷峰谷差、降低用户充电支出并提升电力系统的运行效率与稳定性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事智能电网、电动汽车调度、需求侧管理等相关领域的研究生或科研人员。; 使用场景及目标:①研究峰谷电价政策对电动汽车充电行为的影响机制;②掌握NSGA-II算法在电力系统多目标优化中的具体应用;③实现电动汽车集群的有序充电调度以改善电网负荷曲线; 阅读建议:此资源结合了电力经济学与智能优化算法,建议读者在学习过程中重点关注模型构建与算法实现的衔接部分,动手复现仿真代码以深入理解参数设置与结果分析过程。
详情可查看下方数据集可视化效果。 【数据集概况】 · 检测类别(中文):[电梯(elevator)] · 训练集:1468 张 · 验证集:157 张 · 测试集:158 张 · 总计:1783 张 该数据集聚焦于各类建筑内部及外部环境中的电梯目标检测任务,涵盖住宅楼、办公楼、商场、酒店等多种典型场景下的电梯结构。图像采集覆盖不同光照条件、材质类型与安装位置,充分体现了实际应用中电梯的多样性与复杂性,为智能楼宇管理、安防监控及无障碍设施识别等方向提供了高质量的视觉基础支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 72 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9446** mAP50-95 | 0.6531 Precision | 0.9305 Recall | 0.8777 train/box_loss | 0.5807 train/cls_loss | 0.3505 val/box_loss | 1.0020 val/cls_loss | 0.6208 【训练过程分析】 72 轮训练后 mAP50 达到 0.9446,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6531,和 mAP50 差距 0.29,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9305、Recall 0.8777,精度高于召回,存在一定漏检。 【预测效果展示】 验证集预测效果较好,检测框基本准确覆盖电梯,置信度整体偏高。 【改进建议】 1. 丰富场景...

81,108

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧