当前位置: 首页 > news >正文

鄱阳有做百度网站的物联网有前途吗

鄱阳有做百度网站的,物联网有前途吗,温州营销推广公司,o2o电商平台有哪些家以下代码详细说明如何使用数字证书对PDF电子文件进行数字签名/盖章。PDF文件签署主要传递PDF文件#xff0c;数字证书信息#xff0c;签章图片3个信息。代码中需要的文件、数字证书、签章图片可访问开放签电子签章开源系统详细了解系统的实现与效果。也可通过gitee开源社区下…以下代码详细说明如何使用数字证书对PDF电子文件进行数字签名/盖章。PDF文件签署主要传递PDF文件数字证书信息签章图片3个信息。代码中需要的文件、数字证书、签章图片可访问开放签电子签章开源系统详细了解系统的实现与效果。也可通过gitee开源社区下载开放签开源电子签章系统获取所有开源代码。 1、数字签名/盖章类SignService.java import com.itextpdf.text.DocumentException; import com.itextpdf.text.Image; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfSignatureAppearance; import com.itextpdf.text.pdf.PdfStamper; import com.itextpdf.text.pdf.security.*; import com.resrun.service.pojo.CertificateProperty; import com.resrun.service.pojo.RealPositionProperty; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.springframework.stereotype.Service;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.PrivateKey; import java.security.Security; import java.security.cert.Certificate;/*** Description: 签署业务* Package: com.resrun.service.pdf* ClassName: SignService* copyright 北京资源律动科技有限公司 www.kaifangqian.com*/ Service public class SignService {public byte[] signingContract(byte[] pdfFile, byte[] signBadge, CertificateProperty cert,RealPositionProperty position) throws GeneralSecurityException, IOException, DocumentException {System.setProperty(javax.xml.parsers.DocumentBuilderFactory,com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl);Security.addProvider(new BouncyCastleProvider());//1、解析证书// Java 安全属性文件中指定的默认 keystore 类型如果不存在此类属性则返回字符串 jks。 PKCS12KeyStore ks KeyStore.getInstance(cert.getCertType());try {char[] chars cert.getPassword().toCharArray();ByteArrayInputStream byteArrayInputStream new ByteArrayInputStream(cert.getCertFile());ks.load(byteArrayInputStream, chars);} catch (Exception e) {e.printStackTrace();}// 获取keystore中的所有别名String alias (String) ks.aliases().nextElement();// 返回请求的密钥 入力参数别名用于恢复密钥的密码PrivateKey pk (PrivateKey) ks.getKey(alias, cert.getPassword().toCharArray());// 证书链按用户证书在前根证书授权在后的顺序Certificate[] chain ks.getCertificateChain(alias);byte[] signedFileByte null ;PdfReader reader null ;ByteArrayOutputStream signedFile null ;PdfStamper stamper null ;try {//2、读取PDF文件reader new PdfReader(pdfFile);signedFile new ByteArrayOutputStream();stamper PdfStamper.createSignature(reader, signedFile, \0, null, true);//3、给签署属性服务PdfSignatureAppearance appearance stamper.getSignatureAppearance();if (signBadge null || position null) {appearance.setCertificationLevel(certificationLevel);} else {int pageNum 0;if (inspect) {//如果检查就会抛出检查异常pageNum position.getPageNum();if (pageNum 0)throw new IllegalArgumentException(Pdf page number must be greater than one....!!!);} else {pageNum position.getPageNum() 0 ? 1 : position.getPageNum();}appearance.setVisibleSignature(new Rectangle(position.getStartx(), position.getStarty(), position.getEndx(), position.getEndy()), pageNum, null);// 添加签章图片Image img Image.getInstance(signBadge);appearance.setSignatureGraphic(img);appearance.setImageScale(-1);appearance.setCertificationLevel(certificationLevel);appearance.setRenderingMode(renderingMode);}appearance.setReason(reason);appearance.setLocation(location);//4、调用签署 Creating the signatureExternalSignature pks new PrivateKeySignature(pk, hashAlgorithm, BouncyCastleProvider.PROVIDER_NAME);ExternalDigest digest new BouncyCastleDigest();MakeSignature.signDetached(appearance, digest, pks, chain, null, ocspClient, tsaClient, 0, cryptoStandard);signedFileByte signedFile.toByteArray();} catch (Exception e){e.printStackTrace();}finally {// 关闭流if (stamper ! null) stamper.close();if (signedFile ! null) signedFile.close();if (reader ! null) reader.close();}return signedFileByte ;}//是否判断校验不校验PDF页码private boolean inspect true;private int certificationLevel PdfSignatureAppearance.NOT_CERTIFIED;private PdfSignatureAppearance.RenderingMode renderingMode PdfSignatureAppearance.RenderingMode.GRAPHIC;private String hashAlgorithm DigestAlgorithms.SHA256;private MakeSignature.CryptoStandard cryptoStandard MakeSignature.CryptoStandard.CMS;private String reason 防伪造防篡改数字校验; //原因private String location; //位置private TSAClient tsaClient; //时间戳服务private OcspClient ocspClient;public boolean isInspect() {return inspect;}public void setInspect(boolean inspect) {this.inspect inspect;}public int getCertificationLevel() {return certificationLevel;}public void setCertificationLevel(int certificationLevel) {this.certificationLevel certificationLevel;}public PdfSignatureAppearance.RenderingMode getRenderingMode() {return renderingMode;}public void setRenderingMode(PdfSignatureAppearance.RenderingMode renderingMode) {this.renderingMode renderingMode;}public String getHashAlgorithm() {return hashAlgorithm;}public void setHashAlgorithm(String hashAlgorithm) {this.hashAlgorithm hashAlgorithm;}public MakeSignature.CryptoStandard getCryptoStandard() {return cryptoStandard;}public void setCryptoStandard(MakeSignature.CryptoStandard cryptoStandard) {this.cryptoStandard cryptoStandard;}public String getReason() {return reason;}public void setReason(String reason) {this.reason reason;}public String getLocation() {return location;}public void setLocation(String location) {this.location location;}public TSAClient getTsaClient() {return tsaClient;}public void setTsaClient(TSAClient tsaClient) {this.tsaClient tsaClient;}public OcspClient getOcspClient() {return ocspClient;}public void setOcspClient(OcspClient ocspClient) {this.ocspClient ocspClient;}} 2、证书文件属性类主要存储证书信息CertificateProperty.java import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;/*** Description: 证书文件属性类* Package: com.resrun.service.pojo* ClassName: CertificateProperty* copyright 北京资源律动科技有限公司*/ AllArgsConstructor NoArgsConstructor Data public class CertificateProperty implements Serializable {private static final long serialVersionUID -2073805779543816269L;private byte[] certFile;/** 证书的类型 比如PKCS12和jks*/private String certType;/** 证书密码 */private String password;} 3、签署位置信息类 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable;/*** Description: 经过计算后的文件签署位置属性类* Package: com.resrun.service.pojo* ClassName: PositionProperty* copyright 北京资源律动科技有限公司*/ AllArgsConstructor NoArgsConstructor Data public class RealPositionProperty implements Serializable {private static final long serialVersionUID 8586984409612483553L;/** 签章左下角x坐标 */private float startx;/** 签章左下角y坐标*/private float starty;/** 签章右上角x坐标*/private float endx;/** 签章右上角x坐标*/private float endy;private int pageNum;// 填写值填写专用private String value ;//对齐方式private String align ;//字体private String fontFamily ;//文字大小private Integer fontSize ; }
http://www.w-s-a.com/news/96403/

相关文章:

  • 群晖 nas 做网站建设网站的报价
  • 白山做网站网站建设 app 优化
  • 畜牧业网站建设官方网站下载拼多多app
  • 网站规划和布局备案网站地址
  • 站长工具流量统计招工信息发布平台
  • 上海网站建设公司排行建设无障碍网站
  • phpcms网站打不开网页制作网站设计稿
  • 博客网站开发环境wordpress 中英文双语
  • 做网站报价表群辉装wordpress
  • 请人做游戏的网站视觉设计师的工作内容
  • 昆明网站建设知名企业博客网站开发
  • 如何做网站网页免费thinkphp网站后台模板
  • 怎么自己做优惠券网站济南小程序开发
  • 南昌网站专业制作做仿站如何获取网站源码
  • qq钓鱼网站wordpress 企业站模板
  • 推进文明网站建设免费设计公司logo设计
  • 做电脑租赁网站server 2008 网站部署
  • 做网站的公司一年能赚多少钱wordpress作者增加分类插件
  • 苏州尚云网站建设专业摄影网站推荐
  • 020网站开发微信公众号直接链接网站怎么做
  • 学做烘焙的网站某网站注册需要邮箱是怎么弄
  • 网站的特效代码公司网站开发的工作内容
  • 网站制作哪家好商城网站建设预算要多少钱
  • 怎么做律所的官方网站微网站可以做商城吗
  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广
  • 汕头建网站wordpress文章网址采集
  • 十大景观设计网站用vue框架做的网站
  • 福建省建设监理网官方网站做外贸网站卖什么东西好
  • 公司做网站排名东莞关键词优化推广