问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 怎么验证文件为数字签名认证文件

发布网友 发布时间:2022-04-22 13:41

我来回答

1个回答

热心网友 时间:2022-04-29 14:53

1)从密钥库中读取CA的证书
FileInputStream in=new FileInputStream(".keystore");
KeyStore ks=KeyStore.getInstance("JKS");
ks.load(in,storepass.toCharArray());
java.security.cert.Certificate c1=ks.getCertificate("caroot");
(2)从密钥库中读取CA的私钥
PrivateKey caprk=(PrivateKey)ks.getKey(alias,cakeypass.toCharArray());
(3)从CA的证书中提取签发者的信息
byte[] encod1=c1.getEncoded(); 提取CA证书的编码
X509CertImpl cimp1=new X509CertImpl(encod1); 用该编码创建X509CertImpl类型对象
X509CertInfo cinfo1=(X509CertInfo)cimp1.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); 获取X509CertInfo对象
X500Name issuer=(X500Name)cinfo1.get(X509CertInfo.SUBJECT+"."+CertificateIssuerName.DN_NAME); 获取X509Name类型的签发者信息
(4)获取待签发的证书
CertificateFactory cf=CertificateFactory.getInstance("X.509");
FileInputStream in2=new FileInputStream("user.csr");
java.security.cert.Certificate c2=cf.generateCertificate(in);
(5)从待签发的证书中提取证书信息
byte [] encod2=c2.getEncoded();
X509CertImpl cimp2=new X509CertImpl(encod2); 用该编码创建X509CertImpl类型对象
X509CertInfo cinfo2=(X509CertInfo)cimp2.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); 获取X509CertInfo对象
(6)设置新证书有效期
Date begindate=new Date(); 获取当前时间
Date enddate=new Date(begindate.getTime()+3000*24*60*60*1000L); 有效期为3000天
CertificateValidity cv=new CertificateValidity(begindate,enddate); 创建对象
cinfo2.set(X509CertInfo.VALIDITY,cv); 设置有效期
(7)设置新证书序列号
int sn=(int)(begindate.getTime()/1000); 以当前时间为序列号
CertificateSerialNumber csn=new CertificateSerialNumber(sn);
cinfo2.set(X509CertInfo.SERIAL_NUMBER,csn);
(8)设置新证书签发者
cinfo2.set(X509CertInfo.ISSUER+"."+CertificateIssuerName.DN_NAME,issuer);应用第三步的结果
(9)设置新证书签名算法信息
AlgorithmId algorithm=new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid);
cinfo2.set(CertificateAlgorithmId.NAME+"."+CertificateAlgorithmId.ALGORITHM,algorithm);
(10)创建证书并使用CA的私钥对其签名
X509CertImpl newcert=new X509CertImpl(cinfo2);
newcert.sign(caprk,"MD5WithRSA"); 使用CA私钥对其签名
(11)将新证书写入密钥库
ks.setCertificateEntry("lf_signed",newcert);
FileOutputStream out=new FileOutputStream("newstore");
ks.store(out,"newpass".toCharArray()); 这里是写入了新的密钥库,也可以使用第七条来增加条目
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cpa改分电话可信吗 有人今年收到这样的短信吗? 温馨提示 通知:你此次报考的湖南中级会 ...会计从业资格证,今天有陌生号码打电话说我没过,是真的吗?我都考三... 坠入星河的温柔仙句 惊艳所有人的优美文案 坠入星河的温柔仙句 温柔很仙的宝藏文案 温柔到心坎里的文案句子(温柔且治愈的短句子) 实习期劳务合同简易版 ...企业受伤,如果辞职是否还有补偿?医疗费谁出? 毛晓彤十大经典电视剧 这个锦尚天舞舞蹈里面的音乐是什么?急求 http://m.iqiyi.com/w_19rr... 台式电脑xp系统忘记开机密码怎么办 xp电脑开机密码忘记了怎么办 在一个集装箱躺着许多白衣的女尸的香港恐怖片 麦伯良的经历 举出例子标准化集装箱的编号和标准名称 大宝sod蜜保质期多久 鉴别大宝SOD蜜 关于大宝SOD蜜 SOD蜜能放多久 大宝SOD蜜的生产日期和保质期怎么找不到? 大宝SOD蜜的瓶底下的数字是什么意思? 天猫店铺怎么交税 大宝sod蜜开瓶后能放多久? 大宝sod蜜是哪个国家的 大宝sod蜜生产日期怎么看,大宝sod蜜瓶底日期是生产日期吗 大宝保质期一般多久 请问大宝SOD蜜会过期吗?时间是多久? 放了快一年大宝SOD蜜还能用吗 脆脆炸薯条怎么做好吃 大宝sod密的保质期一般是多久?打开过后的来年可用否? 如何获得java软件工程师资格证 如何用Java读取使用证书 java程序利用根证书验证X509用户证书是否有效 用java怎么实现CA颁发的数字证书的认证功能 java怎么去获取证书文件的信息 在java中怎么验证ssl证书的有效性 微信有些好友聊天记录没了怎么回事 为什么我和一个朋友的微信聊天记录突然不见了,我没有删聊天记录,这是怎么回事? 普惠商城原始股是真是假 中国普惠商城是什么样的平台 中国普惠商城是真的么 黑石集团中国普惠商城正在签到注册骗人,怎样举报他? 中国普恵商城合法吗,是不是骗人的? 普惠商城和普惠金融一样吗? 是不是传销组织 中国电子商务,普惠商城是什么 中国电子商务,普惠商城是什么 中国普惠商城上市时间 亮剑 龙绥国际是传销吗?还有黑石证劵 普惠商城?都是父母在弄,阻止不了。谢谢给个答案让父母死心 普惠e联是否合法,是不是传销组织?