问题标签 [digital-signature]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3703 浏览

encryption - Openssl pkeyutl 期望什么格式签名?

我正在尝试验证通过使用 SHA-1 散列并使用 RSA 私钥加密散列来签名的文件。

显然我正在使用 RSA 公钥进行验证。密钥采用 DER 格式。

签名验证使用 Java 的 Signature 类可以正常工作。

我正在尝试的 openssl 命令(和结果)是:

我在 openssl 配置文件中看不到任何适用的内容,因此我认为该警告并不重要。

savedDigitalSignature.txt 文件包含签名字节。

我的理论是,openssl 正在寻找某种特定文件格式的数字签名,但我在文档中没有找到任何表明应该是什么的内容。

想法?

0 投票
2 回答
283 浏览

digital-signature - 在存档数据时对其进行数字签名

我有一个应用程序,它定期记录制造过程中的数据(各种采样率,最少 1 秒,通常最多 10 分钟或更多)。客户想知道数据是否已更改(原地更改、添加记录或删除记录)。

数据被记录为二进制记录。可以有多个数据流,每个流到自己的文件,每个都有自己的数据格式。数据是一次写入一条记录,如果监控PC或进程出现故障,制造不一定停止,所以我不能保证归档进程会一直保持下去。显然,我只能验证我实际录制的内容,但录制可能会开始和停止。

可以使用哪些方法来验证该数据?我更喜欢使用单独的“日志记录”文件来验证数据以保持向后兼容性,但我不确定这是否可能。除非直接回答,是否有关于搜索词的建议以找到一些建议?

谢谢!

0 投票
1 回答
2802 浏览

java - Java 和 .NET 互操作 (RSA) 签名

我正在基于 .net 的智能卡上签署一些数据,并尝试在 java 环境中验证该签名 - 但没有成功。

智能卡(c#):

客户端(Java):

然后,我尝试在 Java 客户端上创建签名(用于测试)——结果发现在 Java 客户端上创建的签名与在智能卡上创建的签名不同。我这样创建它:

现在我明白签名类似于(传递的数据+使用的算法)的哈希值。这里的实现是否可能不兼容?我还缺少其他东西吗?谢谢!

PS:是的,我验证了输入和输出都正确地从卡传输到卡,关键参数已设置并且输入/输出完全相同。

编辑: Java 中的密钥生成:

然后我在卡上设置私钥的 exp 和 mod。

0 投票
1 回答
1493 浏览

c# - 使用 DSACryptoServiceProvider 存储私钥

我正在尝试将 DSACryptoServiceProvider 类与 C# 一起使用来创建两个 DLL:一个将能够验证和创建数字签名,另一个将能够验证。基本上,我正在尝试创建一个私钥/公钥对并相应地保存它们的密钥(到文件中)。

使用 ExportParameters() 时遇到问题。当我尝试导出包含私有信息的密钥(使用序列化)时,私有信息会自动被清除。

有没有更好的方法来存储密钥?

提前致谢。

0 投票
2 回答
1019 浏览

pdf - 将 PDF 附加到签名的 PDF

我需要将 pdf 文件附加到数字签名的 pdf 文件中,保持签名有效......也许使用修订版?...使用 iTextSharp?我该怎么做?

请帮我一些样品。

0 投票
5 回答
7565 浏览

c# - 在 C# 中验证使用 BER/DER 编码的 ASN.1 格式的 DSA 签名

如何在 C# 中验证 DSA 签名?

鉴于:

  • 消息文本,
  • 签名摘要(通常为 ASN.1 DER 格式),
  • 公钥(采用签名的 X.509 证书、PEM 或 DER 格式)

我尝试了多种方法,但都没有成功:

  • OpenSSL.NET库的各种奇怪错误;我有一个与作者在 SourceForge 上运行的开放线程,但还没有解决这个问题。

  • Microsoft .NET API:无法解压缩 DER 签名进行比较。DSA 签名是 40 字节(两个 20 字节整数),但呈现为两个整数的 DER 编码序列,因此总长度可以在 46 到 48 字节之间(请参阅这篇文章以获得快速概述。)而 . NET 包含解析 ASN.1/DER 的代码(因为它可以读取 DER 格式的证书),它被深埋,无法访问它,因此您可以正确地从 ASN.1/DER 编码的 sig 中检索 40 个字节. 这个问题让我想到了下一个选择......

  • BouncyCastle:通过使用这些Org.BouncyCastle.Asn1函数,我可以解析 ASN.1 签名并将其拉入它的组件 R 和 S 整数值中。但是当我将这些传递给签名验证例程时,它失败了,没有给出任何解释。我不确定我是否做错了什么,因为 C# API完全没有文档,Java 版本几乎没有文档(但我找不到示例或 HOWTO 信息。)

我已经把自己扔在这个问题上大约一个星期了。我知道以前一定有人做过,但我还没有找到任何完整/有效的例子。

我这里有三个 C# 项目,每个项目都完成了 95%,但有一个导致它失败的关键缺陷。任何工作示例代码将不胜感激。

编辑:这是我正在尝试验证的签名示例,已转换为 Base64 和 ASCII 十六进制以使其可发布。这个特定的是 47 字节,但正确的解析器仍然必须接受它,阅读 DER 规范以获取更多信息(如果 MSB 为 1,BER/DER 添加前导 00 以确认符号)

结构符合 DER 规范;它解析如下:

编写我自己的 DER 解析器真的不是一种选择,错误的空间太大,必须有一种方法来正确地做到这一点。

0 投票
4 回答
14609 浏览

java - 如何验证签名的 jar 是否包含时间戳?

对 jar 进行签名并使用 -tsa 选项后,如何验证是否包含时间戳?我试过:

但是输出没有指定关于时间戳的任何内容。我问是因为即使我在 -tsa URL 路径中有错字,jarsigner 也会成功。这是 GlobalSign TSA URL:http ://timestamp.globalsign.com/scripts/timstamp.dll ,它背后的服务器显然接受任何路径(即 timestamp.globalsign.com/foobar),所以最后我是不太确定我的罐子是否带有时间戳。

0 投票
1 回答
4782 浏览

python - 如何使用特定的填充技术使用 M2Crypto 在 python 中签署文档?

我需要使用存储在 .pem 文件中的私钥在 python 中对一些文本进行数字签名。如今,M2Crypto 似乎是这样做的首选方式,所以这就是我正在使用的方式。我想我得到了大部分,但我对如何配置填充感到困惑。具体来说,我需要验证 iPhone 应用程序中的签名,使用如下调用kSecPaddingPKCS1SHA1和描述的填充方案:

要签名的数据是 SHA1 哈希。将完成标准 ASN.1 填充,以及底层 RSA 操作的 PKCS1 填充。

不是加密专家,我对这意味着什么只有一个模糊的概念。我试图查看一些 RFC,但发现它们难以理解。我看到 RSA 对象的加密/解密方法采用填充类型,但我没有看到与签名验证相关的任何类似内容。

任何帮助,尤其是代码方面的帮助,将不胜感激。

(在某种意义上,这是这个问题的反面。)


好的,下面给出的答案是正确的 AFAICT。以下代码使用填充方案为text在 iPhone 上验证生成一个签名。kSecPaddingPKCS1SHA1

(抱歉发表社论,但我可以说加密黑客是宇宙中最糟糕的文档作者吗?)

0 投票
2 回答
1426 浏览

winapi - 如何知道文件具有数字签名属性

是否有任何 Windows API 可以知道文件具有数字签名属性?

0 投票
5 回答
26937 浏览

java - 如何签署自定义 JCE 安全提供程序

Sun 的 PKCS11 JCE 安全提供程序缺少我们需要的一些功能。
所以我使用原始资源编写了它的增强版本。

不幸的是,JCE 基础设施拒绝了新的提供者
“JCE 无法验证提供者”
,因为它没有正确签名。

javax.crypto.JceSecurity.verifyProviderJar(...)抛出。
(它调用javax.crypto.JarVerifier.verify()

有什么建议如何签署新的提供商以使其与 JCE 合作?