V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
jihw007
V2EX  ›  Go 编程语言

求助, golang 签名数据放入数字信封问题

  •  
  •   jihw007 · 2019-10-09 16:04:05 +08:00 · 2778 次点击
    这是一个创建于 1873 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前在 java 用 bouncycastle 库对数据进行 SHA1withRSA 签名后,将签名放置到数字信封里。 现在要用 go 重写这段代码,但是谷歌好久也找不到该如何实现,求助该如何实现。

    java 代码如下:

                CertDTO certDto = CertUtil.getCertInfo(password, cert);
                X509Certificate cerx509 = certDto.getCert()[0];
                List<X509Certificate> certList = new ArrayList();
                CMSTypedData msg = new CMSProcessableByteArray(data);
                certList.add(cerx509);
                Store certs = new JcaCertStore(certList);
                CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
                ContentSigner sha1Signer = (new JcaContentSignerBuilder("SHA1withRSA"))
                    .setProvider("BC").build(certDto.getPriKey());
                gen.addSignerInfoGenerator((new JcaSignerInfoGeneratorBuilder((
                    new JcaDigestCalculatorProviderBuilder())
                    .setProvider("BC").build())).build(sha1Signer, cerx509));
                gen.addCertificates(certs);
                CMSSignedData sigData = gen.generate(msg, isDetach);
                signedData = sigData.getEncoded();
    
    
    4 条回复    2019-10-14 16:59:04 +08:00
    reus
        1
    reus  
       2019-10-09 16:08:37 +08:00
    搜“golang SHA1withRSA”不就有了。
    jihw007
        2
    jihw007  
    OP
       2019-10-09 16:15:12 +08:00
    @reus 进行签名后还需要生成带有签名的数字信封,就是这里卡到了……
    zjyl1994
        3
    zjyl1994  
       2019-10-09 17:54:43 +08:00
    似乎没有数字信封这种通用说法,你可能需要针对他的格式自己拼信封。一般的信封都是消息本体+消息的签名,可能再有点其他字段参与运算。你需要看 java 版怎么封信的实现
    lbp0200
        4
    lbp0200  
       2019-10-14 16:59:04 +08:00
    生成带有签名的数字信封——应该就是用公钥加密一下,对应的关键词是“golang public private key encryption”
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5665 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:43 · PVG 09:43 · LAX 17:43 · JFK 20:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.