【问题标题】:Creating PKCS7 signature from etoken从 etoken 创建 PKCS7 签名
【发布时间】:2015-09-10 13:43:21
【问题描述】:

我正在尝试使用 etoken 生成数字签名。 我正在使用 BouncyCastle 库并且正在生成签名。 问题是我希望它采用 pkcs7 格式,其中还包含像“-----BEGIN PKCS7-----”这样的标签,并以“-----END PKCS7-----”结尾。但是签名我生成的不包含这些标签。 我不确定我哪里出错了。 这是我的代码..

CMSProcessable content = new CMSProcessableByteArray(contentbytes);

    CMSSignedData signedData = signGen.generate(content, securityProviderName);

    byte[] signeddata = signedData.getEncoded();
BASE64Encoder encoder = new BASE64Encoder();
        digitalSignature = encoder.encode(signeddata);

现在我需要 pkcs7 格式的数据。代码有什么问题吗?还是我需要为此添加任何内容?请帮忙..谢谢。

【问题讨论】:

    标签: java cryptography bouncycastle pkcs#11


    【解决方案1】:

    PKCS#7,通常称为 CMS(加密消息语法)是一种使用 ASN.1 指定并使用 BER/DER(基本/可区分编码规则)编码的容器格式。 BER/DER 是执行二进制编码的方法。

    您所说的是 PEM 格式,它是为隐私增强邮件指定的。它有时也被称为 ASCII 装甲,因为它可以通过文本接口发送二进制数据。它由一个页眉和页脚组成,该页眉和页脚还标识数据,以及对 DER 编码 blob 的 base 64 的编码。

    您可以自己实现页眉和页脚生成,或者您可以查看 Bouncy Castle for Java 功能中的 PemWriter 类。格式规范见here

    【讨论】:

    • 您发现代码有什么问题吗?我在这里完全错了吗?
    • 鉴于你提供的小代码,我只能说,如果你得到一个签名,你可能是清楚的
    • 非常感谢。它工作正常。我使用的 etoken 中有多个证书。因此程序正在创建一个两倍于正常大小的签名。现在已排序..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多