标签: digital-signature

什么是Openssl中NID_sha和NID_sha1之间的区别

RSA_sign()的联机帮助页说明了类型参数:

type denotes the message digest algorithm that was used to generate m. It usually is one of NID_sha1, NID_ripemd160 and NID_md5; see objects(3) for details.
Run Code Online (Sandbox Code Playgroud)

但我在Openssl源代码中看到另一种可用的NID_sha类型.有人可以帮我解决这两者之间的区别吗?

我打算使用RSA_Sign函数来签署SHA-256,SHA-512的摘要,但我没有看到SHA-256和SHA-512的相应类型参数,所以在这些情况下我应该为type参数输入什么.

现在我使用类型为NID_sha并尝试签署SHA-256,SHA-512的哈希,并且两者都成功地工作,它提供了正确的签名,后来的签名验证也是正确的,但我只是想知道是什么是NID_sha?

任何帮助将不胜感激.谢谢!

openssl rsa digital-signature

3
推荐指数
1
解决办法
5034
查看次数

Java SHA1WithRSA使用openssl命令行

我有以下一段Java代码,我想使用openssl命令行工具将其转换为shell脚本:

java.security.Signature sig = java.security.Signature.getInstance("SHA1WithRSA");
sig.initSign(privateKey);
sig.update(data);
byte[] signatureBytes = sig.sign();
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试了以下内容:

openssl dgst -sha1 -binary < data.der > data.hash
openssl rsautl -sign -inkey private.key -keyform pem -in data.hash -out data.rsa
Run Code Online (Sandbox Code Playgroud)

但是它不会产生相同的输出.我想它可能与格式或填充等有关.我需要做些什么来纠正openssl脚本?

上面的两个代码都产生了可重复的结果,但java和openssl shell脚本之间的结果是不同的.

所有建议表示赞赏.

亲切的问候Jens

java openssl sha1 rsa digital-signature

3
推荐指数
1
解决办法
5370
查看次数

如何向证书服务请求(CSR)添加其他信息?

我正在使用OpenSSL生成证书服务请求(CSR).

标准字段是:

通用名称:John Doe
组织:MyCompany Inc.
组织单位:销售
地点:SF
州:CA
国家:美国
电子邮箱:john.doe@mycompany.com

但是,我想将自己的字段添加到证书中,例如:
GroupId:348348923
EmployeeLevel:Class 3

在我请求证书颁发机构(CA)签署CSR之前,执行此操作的正确方法是什么?

openssl digital-signature

3
推荐指数
1
解决办法
4074
查看次数

在Java中验证hmac sha1签名

我想知道如何验证我创建的签名.我创建签名的代码看起来与此类似:HMAC-SHA1:如何在Java中正确执行?

我发送消息,签名和公钥来验证签名.使用KeyPairGenerator生成公钥和私钥.我如何使用公钥来验证我的签名?或者你可以建议任何好的Java库用于签名和验证使用HMAC SHA1的签名吗?

java digital-signature hmac hmacsha1

3
推荐指数
1
解决办法
1万
查看次数

如何使用PDFBox对动态创建的PDF文档进行数字签名?

对不起!我在java中很穷.
请在我错的地方纠正我,改善我穷人的地方!

我正在尝试使用PDFBox使用以下程序对动态创建的pdf进行数字签名:

本程序中的任务:
(i)创建模板PDF
(ii)更新ByteRange,xref,startxref
(iii)构建用于签名创建的原始文档
(iv)创建分离的包络数字签名
(v)通过连接原始Doc部分构建数字签名的PDF文档 - I,独立签名和原始PDF部分 - II

观察:
(i)pdfFileOutputStream.write(documentOutputStream.toByteArray()); 使用Visible Signature创建模板PDF文档.

(ii)它创建一些PDF签名文档,但有错误(a)无效令牌和(b)几个解析器错误
(现在在MKL的能力指导下纠正!)

请建议我以下内容:

(i)如何在layer2上的Visible Signature中添加签名文本.

提前致谢!

    package digitalsignature;

    import java.awt.geom.AffineTransform;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.security.Signature;
    import java.util.ArrayList;
    import org.bouncycastle.cert.X509CertificateHolder;
    import org.bouncycastle.cert.jcajce.JcaCertStore;
    import org.bouncycastle.cms.CMSProcessableByteArray;
    import org.bouncycastle.cms.CMSTypedData;
    import org.bouncycastle.cms.SignerInfoGenerator;
    import org.bouncycastle.cms.SignerInfoGeneratorBuilder;
    import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
    import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
    import org.bouncycastle.util.Store;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.security.KeyStore;
    import java.security.PrivateKey;
    import java.security.cert.CertStore;
    import java.security.cert.Certificate;
    import java.security.cert.CollectionCertStoreParameters;
    import java.security.cert.X509Certificate;
    import java.text.DecimalFormat;
    import …
Run Code Online (Sandbox Code Playgroud)

java pdf bouncycastle digital-signature pdfbox

3
推荐指数
1
解决办法
1万
查看次数

iText - 生成没有证书链的PDF哈希

我正在尝试构建一个发生以下情况的应用程序:

  1. 客户端从服务器请求PDF哈希.
  2. 服务器生成PDF文件的哈希并将其发送到客户端.
  3. 客户端使用其私钥对此哈希进行签名,并将签名的哈希与其自己的证书的公共部分一起发送.
  4. 服务器生成一个新的签名PDF文件.

我遇到的问题是:服务器似乎不可能在事先没有客户端证书的情况下生成要签名的哈希值.我真的更喜欢创建一个解决方案,其中服务器不需要知道客户端的证书就可以创建文档摘要.

到目前为止,我发现的所有示例都使用PdfPKCS7.getAuthenticatedAttributeBytes函数来获取待签名的哈希值,但这需要知道客户端证书.我看过Bruno Lowagie撰写的"PDF文档的数字签名"白皮书,但我没有看到确切消化的信息.

这是我当前尝试的代码片段:

public byte[] simplePresign(String src, String digestAlgorithm) throws IOException, DocumentException, GeneralSecurityException {
    this.digestAlgorithm = digestAlgorithm;
    tsaClient = new CustomTSAClient();

    PdfReader reader = new PdfReader(src);
    os = new ByteArrayOutputStream();
    PdfAStamper stamper = PdfAStamper.createSignature(reader, os, '\0', PdfAConformanceLevel.PDF_A_1B);
    appearance = stamper.getSignatureAppearance();

    PdfSignature dic = new PdfSignature(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED);
    appearance.setCryptoDictionary(dic);

    HashMap<PdfName, Integer> exc = new HashMap<PdfName, Integer>();
    exc.put(PdfName.CONTENTS, getEstimatedSize(null, tsaClient) * 2 + 2);
    appearance.preClose(exc);

    InputStream data = appearance.getRangeStream();
    MessageDigest mDigest = DigestAlgorithms.getMessageDigest(digestAlgorithm, null);

    return DigestAlgorithms.digest(data, mDigest); …
Run Code Online (Sandbox Code Playgroud)

pdf hash certificate itext digital-signature

3
推荐指数
1
解决办法
3093
查看次数

为什么?从CMS/pkcs#7到Cades

是否我知道CMs/pkcs#7签名中缺少一些信息以证明签名在很长一段时间后的有效性已采用CADES格式,是否有其他原因导致用户从CMs/pkcs#7fomats 迁移到Cades.

每种格式的优缺点是什么?先感谢您

digital-signature

3
推荐指数
1
解决办法
1716
查看次数

在使用PDFBox的Java中,如何使用文本创建可见的数字签名

带有文本和背景图像的数字文本我正在尝试使用Java中的PDFBox对PDF文件进行数字签名,并在页面上显示与在Acrobat中手动创建的类似的可见文本。如该图所示(我只寻找快照,另一个也拥有数字签名的细节),此示例显示了使用图像文件进行签名。怎么做?

带有PDF文本的数字签名

java digital-signature pdfbox

3
推荐指数
1
解决办法
4491
查看次数

如何使用带有etoken(笔驱动器)的Python对PDF文档进行数字签名?

如何使用Python对PDF文档进行数字签名?我有一个令牌(在笔式驱动器中)。

此外,我使用openpyxl创建了一个excel文件,并将其转换为PDF。现在有一个要求,我需要向该PDF文档添加数字签名。

有什么办法可以在python中实现吗?

python digital-signature pypdf2

3
推荐指数
1
解决办法
7434
查看次数

此pdf数字签名正确吗?PHP / TCPDF

我正在为我的公司更新一个项目,并且有一个部分需要使用我们的证书文件对pdf进行数字签名。在这种情况下,我应该使用PHP的更新库来更改对该pdf进行签名的脚本。

在旧代码中,我们使用另一个脚本来实现这一点,并且我们必须使用.p12文件+字符串。使用此旧脚本,当您使用Acrobat Reader DC打开创建的pdf时,我们将获得下一张图像,在该图像中您可以看到“签名且所有签名均有效”。

在此处输入图片说明

在新脚本中,我使用下一个示例:

https://tcpdf.org/examples/example_052/

为了能够将本示例与我的证书一起应用,我必须将我的pfx文件证书(“ .p12”)转换为2种“ .pem”,并使用以下next命令行:

openssl pkcs12-在myOldCertificate.p12 -clcerts -nokeys -out publicCert.pem->问我“输入导入密码”

openssl pkcs12 -in myOldCertificate.p12 -nocerts -out privateKey_cert.pem->问我“输入导入密码”以及“输入PEM密码”

所以最后,我只是从下载的示例52中更改了89行。

//设置文件签名

$ pdf-> setSignature('file:///var/www/html/publicCert.pem','file:///var/www/html/privateKey_cert.pem','xxxxxx','',2,$信息); ->在“ xxxxx”中,我输入了与导入密码相同的字符串,以防万一,PEM密码也相同。

当我创建数字签名的pdf并使用Acrobat Reader DC打开时,您可以看到下一张图片:

在此处输入图片说明

我担心的是,因为我看到“我的公司认证”字样,而且一切正常,但没有绿色勾号,我不确定它是否完全有效。您必须认为我将需要最安全的方法来验证此pdf的真实性和完整性。

php pdf openssl digital-signature tcpdf

3
推荐指数
1
解决办法
4301
查看次数

标签 统计

digital-signature ×10

java ×4

openssl ×4

pdf ×3

pdfbox ×2

rsa ×2

bouncycastle ×1

certificate ×1

hash ×1

hmac ×1

hmacsha1 ×1

itext ×1

php ×1

pypdf2 ×1

python ×1

sha1 ×1

tcpdf ×1