cfca工具包 加解密问题

查看余e 查看余e 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用下面这种方法加解密, 在加密的时候有四种加密算法供选择,然后当我用EnvelopUtil.DES3_CBC这种算法加密后解密会报错“850935: 解析消息数字信封失败 com.cfca.util.pki.cms.CMSException: key invalid in message.” 但是用其他三种算法就没有问题,想问问大神们这是怎么回事

    
public static void main(String[] argv)
{
try
{
Session session = null;// 加密库回话session对象

byte[] fbisCer = null ;
byte[] Key = null ;

JCrypto jcrypto = JCrypto.getInstance();
jcrypto.initialize("JSOFT_LIB", null);
session = jcrypto.openSession("JSOFT_LIB");

//读取公钥证书
InputStream is = jcrypto.getClass().getResourceAsStream("/fbis/"+"14.cer");
int len = is.available();
fbisCer = new byte[len];
is.read(fbisCer);
is.close();
//读取私钥匙证书
is = jcrypto.getClass().getResourceAsStream("/fbis/"+"pfx_14.pfx");
len = is.available();
Key = new byte[len];
is.read(Key);
is.close();

EnvelopUtil envUtil = new EnvelopUtil();
X509Cert cert = new X509Cert(fbisCer);
envUtil.addRecipient(cert);
envUtil.setCMSFlag();
byte[] b64MsgEnvelop = envUtil.envelopeMessage("aaaa".getBytes(), EnvelopUtil.DES3_CBC,
session);
JKey priKey = KeyUtil.getPriKey(Key, "cmbc");
// 数字信封接收者的公钥证书
X509Cert cert1 = CertUtil.getCert(Key, "cmbc");
// 根据私钥,公钥证书解密信息
byte[] src = envUtil.openEnvelopedMessage(b64MsgEnvelop, priKey, cert1, session);

System.out.println("tt:"+b64MsgEnvelop);
System.out.println(new String(src));
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}
...全文
评论 4
收藏 已收藏
分享
返回顶部
查看余e
Web 开发 81,108 成员 341,721 内容