标签: digital-signature

数字签名错误 - 签名长度不正确:得到 344,但预期为 256

我正在开发一个数字签名 java 类,使用 SHA1withRSA 算法和 256 位证书。但我收到此错误:

签名长度不正确:得到 344,但预期为 256。

我正在使用 SunJSSE 提供程序(未实现 SHA256withRSA 算法),因为他使用 PKCS12 密钥库类型。我需要这个,因为这是一个批处理应用程序。

SAH1withRSA算法与256位证书不兼容吗?

java certificate digital-signature

2
推荐指数
1
解决办法
6984
查看次数

使用 javax.crypto.Cipher 与 java.security.Signature 进行签名

我正在编写一些旧代码,需要更新它才能使用另一个加密提供商。我不是 Java 专家。我试图了解使用javax.crypto.Cipher和签署哈希值之间有什么区别java.security.Signature

现有代码类似于:

  Cipher cipher = Cipher.getInstance(CFG_ALGO);
  cipher.init(Cipher.DECRYPT_MODE, privateKey);
  byte[] signature = cipher.doFinal(payload);
Run Code Online (Sandbox Code Playgroud)

我收到的使用新提供程序的示例片段如下所示:

  final Signature sign = Signature.getInstance("RSA", SIGNATURE_PROVIDER);
  sign.initSign(keystore.getPrivateKey(keyName, keyPass));
  sign.update(data);
  byte[] signature = sign.sign();
Run Code Online (Sandbox Code Playgroud)

如果我为两者使用相同的提供商,两者之间有什么区别吗?一种方式通常优于另一种方式吗?

java cryptography jce digital-signature jca

2
推荐指数
1
解决办法
1725
查看次数

使用 iText 自定义签名外观

我正在尝试使用 iText(sharp,版本 5.5.13)创建自定义数字签名,用户可以从一组四个位置(顶部、底部、左侧和右侧)设置图像位置,如下所示:

权利:

图像权

左边:

左图

顶部:

图像顶部

底部:

图片底部

到目前为止,我尝试在签名的第 0 层上工作,但我认为我做错了,因为签名详细信息是在第 2 层中设置的。

然而,这只是设置图像位置的初始草图。在下面的代码中,我加载图像并将其放入一个块中(想法取自此示例

PdfTemplate pdfTemplate = sap.GetLayer(0);
ColumnText c1 = new ColumnText(pdfTemplate);
Image img = Image.GetInstance(signatureImage);
Phrase elements = new Phrase();
elements.Add(new Chunk(img, 0, 0, true));
//c1.SetSimpleColumn(elements, 0, 0, rectangle.Width, rectangle.Height / 4, 0, Element.ALIGN_CENTER); // align bottom
//c1.SetSimpleColumn(elements, 0, rectangle.Height / 2, rectangle.Width, rectangle.Height, 0, Element.ALIGN_CENTER); // align top
c1.SetSimpleColumn(elements, rectangle.Width/2, 0, rectangle.Width, rectangle.Height, 0, Element.ALIGN_CENTER); // align right
//c1.SetSimpleColumn(elements, 0, 0, rectangle.Width/2, rectangle.Height, 0, Element.ALIGN_CENTER); // …
Run Code Online (Sandbox Code Playgroud)

c# pdf itext digital-signature

2
推荐指数
1
解决办法
4022
查看次数

如何将base64数据下载为图像?

我使用 vue-signature 库,但我不知道如何下载生成为图像的 base64 数据,\n这里是库的链接:https: //www.npmjs.com/package/vue-signature \n我已经阅读文档并查看“Save()”方法将图像保存为 PNG/JPG\xe2\x80\xa6 但它给了我 base64 数据,\n谢谢您的协作,我使用 vue js

\n

javascript base64 image digital-signature vue.js

2
推荐指数
1
解决办法
7698
查看次数

如何签署 Git 笔记?

Git 注释是向 Git 对象添加元信息的功能。请参阅这篇Stackoverflow 文章了解更多详细信息。与提交类似,我也想签署注释。

我的本地 Git 配置为对所有提交进行签名。虽然签署 Git 提交按预期工作,但 Git 注释仍然未签名。在我的本地 Git 配置中,我有以下内容:

# excerpt from ~/.gitconfig
[commit]
    gpgsign = true
Run Code Online (Sandbox Code Playgroud)

为了签署笔记,我尝试了以下方法。

# excerpt from ~/.gitconfig
[commit]
    gpgsign = true
Run Code Online (Sandbox Code Playgroud)

我怎样才能使 Git 注释也被签名?

git security digital-signature git-notes

2
推荐指数
1
解决办法
92
查看次数

安全加密签名是否必须位于其引用的文件之外?

我正在用Python编写宠物项目,它涉及用户A和B通过网络进行交互,试图确保每个用户都有来自用户C的同一文件的本地副本.

这个想法是C给每个文件经过数字签名.A&B交易他们拥有的数字签名,并在他们自己的副本上查看.如果签名失败,则其中一个具有不正确/损坏/修改的文件版本.

因此,问题是,C可以分发单个文件,以某种方式包含它自己的签名吗?或者C是否需要单独提供文件和签名?

python cryptography file digital-signature

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

CryptoAPI:如何使用CryptVerifySignature验证来自OpenSSL或Java的DSA签名

我希望能够使用Microsoft CryptoAPI验证OpenSSL生成的DSA签名.

考虑您有以下输入:

  • 现有的DSA公钥:
  • 要验证的数据
  • 二进制签名

签名已从Base64转换为48个字节的系列.

openssl cryptoapi digital-signature

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

使用iText进行数字签名,无描述(仅图像)

我尝试使用iText以数字方式签署pdf,并且我在这个例子中成功地帮助了我.

我想做的只是显示签名者的标志,而不是文字说明

XXXX在XXXX日期间以数字方式签名

如果我使用签名设置图像,则会显示图像,但我无法删除那些对我无用的描述(在签名项目中可读,不需要在pdf的主视图上显示).

PdfSignatureAppearance appearance = stamper .getSignatureAppearance();
appearance.setImage(Image.getInstance(IMAGE));
appearance.setVisibleSignature(new Rectangle(0, 672, 200, 792), 1, "first");
Run Code Online (Sandbox Code Playgroud)

这些是示例中显示的标志性外观,并且(显然)没有写出我提到的描述.

是否有可能将它们从签名外观中删除?

java pdf itext digital-signature

1
推荐指数
2
解决办法
3838
查看次数

"SHA1withRSA"的细节是什么?

无辜地,我认为"SHA1withRSA算法"只是用"SHA1"操作plainText,并使用RSA/pkcs1padding来加密"SHA1"的结果.但是,我发现我错了,直到我写了一些java代码来测试我的想法.我使用RSA publickey来解密签名,我使用相应的私钥来签署"SHA1withRSA算法".但我发现结果不等于"SHA1(plainText)",下面是我的java代码:

    String plaintext= "123456";
    Signature signature=Signature.getInstance("SHA1withRSA",new BouncyCastleProvider());
    signature.initSign(pemPrivatekey);
    signature.update(plaintext.getBytes());
    byte[] sign = signature.sign();
    //RSA decode
    byte[] bytes = RsaCipher.decryptByRsa(sign, pemPublickey);
    String rsaDecodeHex=Hex.toHexString(bytes);
    System.out.println(rsaDecodeHex.toLowerCase());

    String sha1Hex = Hash.getSha1(plaintext.getBytes());
    System.out.println(sha1Hex);
    //rsaDecodeHex!=sha1Hex
Run Code Online (Sandbox Code Playgroud)

很容易找到rsaDecodeHex!=sha1Hex,在哪里

rsaDecodeHex = 3021300906052b0e03021a050004147c4a8d09ca3762af61e59520943dc26494f8941b

sha1Hex = 7c4a8d09ca3762af61e59520943dc26494f8941b.

那么,"SHA1withRSA"的细节是什么?

java encryption sha1 rsa digital-signature

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

使用itext无法正常工作的数字签名验证

我正在使用itext库验证数字签名的pdf,以下示例可在https://developers.itextpdf.com/examples/security/digital-signatures-white-paper/digital-signatures-chapter-5站点上找到.我在验证数字签名文档时遇到以下错误.任何人都可以帮助解决这个问题.

Exception in thread "main" ExceptionConverter: java.security.NoSuchAlgorithmException: SHA256with1.2.840.10045.4.3.2 Signature not available
at java.security.Signature.getInstance(Signature.java:229)
at com.itextpdf.text.pdf.security.PdfPKCS7.initSignature(PdfPKCS7.java:697)
at com.itextpdf.text.pdf.security.PdfPKCS7.<init>(PdfPKCS7.java:459)
at com.itextpdf.text.pdf.AcroFields.verifySignature(AcroFields.java:2420)
at com.itextpdf.text.pdf.AcroFields.verifySignature(AcroFields.java:2373)
at nic.test.C5_01_SignatureIntegrity.verifySignature(C5_01_SignatureIntegrity.java:24)
at test.ExtractSignInfor.inspectSignature(ExtractSignInfor.java:95)
at test.ExtractSignInfor.inspectSignatures(ExtractSignInfor.java:135)
at test.ExtractSignInfor.main(ExtractSignInfor.java:63)
Run Code Online (Sandbox Code Playgroud)

java bouncycastle itext digital-signature

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