印章签名相关内容小结

308209b7308205A6300D160245530201011604424A43411610344336393231303530443136453041393082038C0201020C0CE6B58BE8AF95E58DB0E7ABA03082034A0482034630820342308202E8A003020102020A1A100000000000077BB3300A06082A811CCF550183753044310B300906035504061302434E310D300B060355040A0C04424A4341310D300B060355040B0C04424A43413117301506035504030C0E4265696A696E6720534D32204341301E170D3230303630323136303030305A170D3230303930333135353935395A303E310B300906035504060C02434E3118301606092A864886F70D0109010C0932324071712E636F6D3115301306035504030C0C6365736869796F6E676875323059301306072A8648CE3D020106082A811CCF5501822D03420004DBD51BADA38B0877E5BF63EE8C1DBC4BC4938B7BF5709747265EEA23AAE798CF06165A49BC115BD3166CBCC78D95755A3911A92A6C2FBFB34287AEB8CD71A3E4A38201C6308201C2301F0603551D230418301680141FE6CFD48FC5222A974A298A15E716C99234C4B6301D0603551D0E04160414A172E500CD9443C96E99CE07AD7532B1A7EC0679300B0603551D0F0404030206C03081A20603551D1F04819A3081973060A05EA05CA45A3058310B300906035504061302434E310D300B060355040A0C04424A4341310D300B060355040B0C04424A43413117301506035504030C0E4265696A696E6720534D3220434131123010060355040313096361323163726C32373033A031A02F862D687474703A2F2F3131312E3230372E3137372E3138393A383030332F63726C2F6361323163726C32372E63726C3024060A2A811C86EF320201010104160C145346353230313031313939303035323830303139302006086086480186F8440204140C12353230313031313939303035323830303139301F060A2A811C86EF320201010E04110C0F393938303030313030303939323136302D060A2A811C86EF3202010117041F0C1D3840323135303039534630353230313031313939303035323830303139302006082A811CD01404010104140C123532303130313139393030353238303031393014060A2A811C86EF320201011E04060C0431303530300A06082A811CCF550183750348003045022100F98F1DE8D69A5A415E8171BCE58F7317462583A30BEEBF4CBF9B61B367AE84F6022057A25D9A4CC6F899E75BD3E7ACD8A33771664C3C1C9F99AF9A1228BDA7C028A0170D3230303632333036303733315A170D3230303632323136303030305A170D3231303632333135353935395A308201F11603474946048201E247494638396173002600A20000000000FFFFFFFC0505E91C1CFFFFFF00000000000000000021F90401000004002C00000000730026000003FF28BADCFE30CA49ABBD38EBCDBBFF60288E64591268AAAE6CEBBE702CCF340AD578AEEFBCFDF4C0E06C402C1A8F45149175E32D5F831632B97AA6ACAEA9761B5D3559C7EB16DCAD6AC9650236CB6DAF095FD554CD254BE768711A661C52BD3F687D6D76827F7484346F6C7B29717A547D727777566E787C4F978D8E8194728D9C9C8C9BA366A58B3E0E389A57AE4A994B487A3A75A08780AB355D964A65A2989FACB83C8FA7AF9ABCCA86C466B5CC61A9C68858CB74BE92A7D9D8613BA8CD709EB796D6C9DB909189C367792DD3DBC9BED8B099E883A6B1BFC02FEF6BF1D7F4D4C420070F1F943D8B5285D3E5471E4067078521AA853014BE69551CFE83C826A7E04387BBFC598481510CBD5E1221A6B11572E53E7EE20A09FCD89194CB3121394E2219F3D6B19929C729C3A350E2C6191889A5AB6988DAAC798A548263D273A2366E32B54579AA95A25083FD04D14257C99C29AE3294065351D29E3EB7624D0E0C5631154EB655B522145AC91B5D7636BBA96AE0A7E858303DD03A9DCA4DF0600651850839D75891E28584256BDEBC6E545BCEA043F33441BAB4E9D3A853AB5ECDBAB5EBD40900003B02011E02010A048203FF308203FB308203A2A003020102020A1A100000000000077166300A06082A811CCF550183753044310B300906035504061302434E310D300B060355040A0C04424A4341310D300B060355040B0C04424A43413117301506035504030C0E4265696A696E6720534D32204341301E170D3230303532303136303030305A170D3230303832313135353935395A3057310A300806035504290C01313121301F06035504030C18E588B6E4BD9CE7B3BBE7BB9FE7ADBEE5908DE7AD96E795A5310D300B060355040A0C04424A4341310A3008060355040A0C0131310B300906035504060C02434E3059301306072A8648CE3D020106082A811CCF5501822D034200044FEE898112D008CAC49F9ED287338A80F2D1E1CC933633BBED61F03FD438304497C9518B58FAA12E629CFB969F620BEB242B03DE5E270150B8A850CA2788ABAFA382026730820263301F0603551D230418301680141FE6CFD48FC5222A974A298A15E716C99234C4B6301D0603551D0E041604145BB90F220626EEA0CF1CFD230F07087719702A5A300B0603551D0F0404030206C03081A20603551D1F04819A3081973060A05EA05CA45A3058310B300906035504061302434E310D300B060355040A0C04424A4341310D300B060355040B0C04424A43413117301506035504030C0E4265696A696E6720534D3220434131123010060355040313096361323163726C32373033A031A02F862D687474703A2F2F3131312E3230372E3137372E3138393A383030332F63726C2F6361323163726C32372E63726C3013060A2A811C86EF320201010104050C034A4A31306006082B0601050507010104543052302306082B0601050507300186174F4353503A2F2F6F6373702E626A63612E6F72672E636E302B06082B06010505073002861F687474703A2F2F63726C2E626A63612E6F72672E636E2F636169737375657230400603551D2004393037303506092A811C86EF320202013028302606082B06010505070201161A687474703A2F2F7777772E626A63612E6F72672E636E2F637073301106096086480186F84201010404030200FF3011060A2A811C86EF320201010804030C01313013060A2A811C86EF320201020204050C034A4A31301F060A2A811C86EF320201010E04110C0F3939383030303130303039313734353013060A2A811C86EF320201010404050C034A4A31301E060A2A811C86EF320201011704100C0E323230403231353030394A4A3031300F06082A811CD01404010404030C01313014060A2A811C86EF320201011E04060C0431303530300A06082A811CCF550183750347003044022066E73DA464E3958E8D5C819B82491761C4E7379FD929F4392DF1AB1703B73B9502202D9550602DBF1A954DC7191334A4B5DD5DAD6292DF41A93D80331875D7DE253C06082A811CCF55018375

以上信息来源于某交流群,乍一看一堆数字看不出来啥,通过ASN1 Editor编辑工具打开得到以下信息

通过工具打开可以发现测试印章,这说明该部分可能是印章的相关信息。。。。。。

细心的朋友看到这里应该会发现制作“系统签名策略”,那么该部分可能是跟签章信息有关,也就是跟制章人证书相关的信息。。。。。。

到这就是ASN1显示的全部信息了。。。。。。

看不明白不要紧,先将展开的关闭,可以发现只有三部分,那就一步步打开分析

打开sequence,可发现是跟印章相关信息

打开octet-string是跟签章信息相关

看到501大部分朋友就知道这是签名算法SM2withSM3

电子印章信息结构,可参考标准 GB/T 38540-2020  信息安全技术 安全电子签章密码技术规范

https://www.doc88.com/p-84987071579961.htmlicon-default.png?t=N7T8https://www.doc88.com/p-84987071579961.html

说实话小编对ASN1研究不是很透彻,那就继续观看看有没有什么有用信息

仔细看此处结构很像一个证书(ASN1就是证书解析工具,有点小尴尬),通过“制作系统签名策略”那该部分很有可能是制章人证书,反推那“测试印章”就是电子印章证书

由此可知制章人证书公钥,印章信息,再来一个签名值不就可以验签了?

将文件全部折叠就会发现,该数据包含三部分印章信息、制章人证书、签名算法

以下是签名值

8f17eea9cde00dedc377f2f2c992ad75fa504599e8b407b81b353b6b3abd4cc2
f82e2c55490200b4cc5c34c380104f1aef181fcf2b03d539b340d9726bea3baf

通过制章人公钥044fee898112d008cac49f9ed287338a80f2d1e1cc933633bbed61f03fd438304497c9518b58faa12e629cfb969f620beb242b03de5e270150b8a850ca2788abaf

对签名数据进行验签,(数据就是最上面的一串数字)

验签成功!

签章流程可参考:

https://www.cnblogs.com/yuanchenhui/p/esign.htmlicon-default.png?t=N7T8https://www.cnblogs.com/yuanchenhui/p/esign.html

小编欢迎各位朋友留言交流。

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 Java 中的印章签名,可以使用数字证书和印章图片。具体操作步骤如下: 1. 获取数字证书和私钥,并使用私钥对印章图片进行签名。可以使用 Java 中的 KeyStore 类和 PrivateKey 接口来获取证书和私钥。 ``` KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(new FileInputStream("path/to/certificate.pfx"), "password".toCharArray()); String alias = keyStore.aliases().nextElement(); X509Certificate cert = (X509Certificate) keyStore.getCertificate(alias); PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, "password".toCharArray()); BufferedImage stamp = ImageIO.read(new FileInputStream("path/to/stamp.png")); Signature signature = Signature.getInstance("SHA256withRSA"); signature.initSign(privateKey); ByteArrayOutputStream stampBytes = new ByteArrayOutputStream(); ImageIO.write(stamp, "png", stampBytes); byte[] stampData = stampBytes.toByteArray(); signature.update(stampData); byte[] signedData = signature.sign(); ``` 2. 将签名后的印章图片和证书一起写入 PDF 文件中。可以使用 iText 库来操作 PDF 文件。 ``` PdfReader reader = new PdfReader("path/to/unsigned.pdf"); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("path/to/signed.pdf")); PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); appearance.setReason("I am the author"); appearance.setLocation("Beijing"); appearance.setVisibleSignature(new Rectangle(100, 100, 200, 200), 1, "signature"); PdfTemplate template = PdfTemplate.createTemplate(stamper.getWriter(), stamp.getWidth(), stamp.getHeight()); Graphics2D g2d = template.createGraphics(stamp.getWidth(), stamp.getHeight()); g2d.drawImage(stamp, 0, 0, null); g2d.dispose(); PdfImage image = PdfImage.getImage(template); appearance.setImage(image); ExternalSignature pks = new PrivateKeySignature(privateKey, "SHA-256", "BC"); ExternalDigest digest = new BouncyCastleDigest(); MakeSignature.signDetached(appearance, digest, pks, new X509Certificate[]{cert}, null, null, null, 0, MakeSignature.CryptoStandard.CMS); stamper.close(); reader.close(); ``` 以上就是 Java 实现印章签名的基本步骤。需要注意的是,本例中使用了 BouncyCastle 库来实现签名算法,需要预先引入该库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值