问题标签 [ber]
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.
c# - 使用来自外部 Web 服务的哈希和签名通过 iText sharp 签署 PDF
我正在尝试通过外部网络服务签署 pdf。Web 服务接收 SHA-256 十六进制编码的哈希,并在签名时返回一个十六进制摘要签名。
目前,我一直在尝试使用 iText 7 (c#) 库尝试使用签名值对文档进行签名。我确实设法使用本地自签名证书使用 itext 签署了一个 pdf 文档,但还没有使用外部容器,adobe acrobat 总是报告 BER 解码问题,这让我相信解析时出现问题我这边或签名值不正确。
软件示例的签名步骤如下:
首先添加一个空白 dignature ,签署此文档,然后生成一个哈希 (SHA-256)。
/li>哈希转换为字节数组并发送到 web 服务
/li>Web 服务使用签名数据回复字符串数据的示例
"473e8e376ca067f3c806902f718be21bf8a788ddbd31786b14fc47678596d6993a4f1ecb80e091f93af4820a75d97aee4b1a15c4a7914b4f881ca86e5d06b429b176d5b663c986c9ce2824333c98e0b5def0af53178b9ce38aa4efaa0adce2eee409487fb7fecf58e4c5bfcc3a0d083e35a83f9c722c73b78784e9990b6f00b89ae4934714c92b34699ce00ad5a662d0058bd613021449e9d09ab2d25376230de75591ab6ce4b5c5d24216794e8c871a690b4e19011621d41c66f4b0048abc9f2d4449072ee9e70c30dcf9b8b5a1ea8ee3a285163c2c5b293a3798a4a13ca59e83c66d9148d519b55e13643a3a7e0794732b92f50c1424f7be5774f67e910076"
然后使用以下函数将字符串转换为字节数组
/li>现在使用字节数组签名构造签名容器,并使用容器和预签名文档字节对文档进行签名
/li>
我还在下面的链接中添加了原始 pdf、未签名 pdf 和签名 pdf 以供参考。我希望有人可以看看内容,也许可以告诉我这里出了什么问题。我已经在网上花了很多时间寻找解决方案,但到目前为止还没有找到。
问候,乔斯·艾勒斯
感谢 mkl 的回答,我重写了构建 PKCS 容器的代码,如下所示,首先创建哈希和预签名字节并将其发送到签名服务:
然后我使用返回的签名并创建新的 PKCS7 容器并执行延迟签名,如下所示(提到的哈希是上一节中的字节数组 sh):
目前证书在pdf中可见,但现在我仍然有文件已被更改的错误。我现在有点卡住了,有什么建议吗?我也很好奇这里是否需要使用私钥(如果有必要,我还没有从提供商那里得到回复)。
有没有人有任何见解,使用的网络服务来自 Digiidentity
java - EMV TLV 解析有时不显示构造值(子项)
我的方法parseTLV()
有时不能正确地归结为构造值(子 TLV)。我使用过滤器((tag & 0x20)! = 0)
来检测构造值,但有时它不能按预期工作。
例如
导致以下结果parseTLV
:
- 标签:
70
- 值:8C159F02069F03069F1A0295055F2A029A039C019F3704
- 标签:
8C
- 值:9F02069F03069F1A0295055F2A029A039C019F3704
但是,我希望得到
- 标签:
70
- 值:8C159F02069F03069F1A0295055F2A029A039C019F3704
- 标签:
8C
- 值:9F02069F03069F1A0295055F2A029A039C019F3704
- 标签:
9F02
- 值:06
- 标签:
9F03
- 值:06
- 标签:
9F1A
- 值:02
- 标签:
95
- 值:05
- 标签:
5F2A
- 值:02
- 标签:
9A
- 值:03
- 标签:
9C
- 值:01
- 标签:
9F37
- 值:04
- 标签:
java - Bouncycastle 签名数据消息中的附加八位字节字符串
我正在创建一个 CSCA 主列表签名数据,但在成功创建它之后,我在签名消息中看到两个八位字节字符串而不是一个。请检查源代码和输出文件
使用 BC 的 CMS
>>>>> 编码数据:
>>>>> 机器学习数据:
错误的主列表(使用 BC)
预期的主列表(使用 sun.security.pkcs)
----PKCS#7 使用太阳----
decode - 解码并解析使用 BER(基本编码规则)编码的文件以将相关字段输出到没有 .asn(ASN.1)模式的 csv?
我得到的文件是示例 CDR 文件(呼叫详细记录)
SGSN/GGSN 数据格式:ASN.1 基本编码规则 (BER)。
这些文件没有扩展名,我没有可以使用的架构。我该如何处理?
gnuradio - USRP N310 中 GNU Radio 中的 PSK 调制
目前,我正在与 Ettus Research 的 N310 合作实施不同的 PSK 调制方案。当我在两个相邻的 USRP 之间传输数据时,我对测量每个方案的误码率 -BER- 很感兴趣。因此,我使用 GNU Radio Companion 进行软件开发。对于 BPSK 收发器,我使用矢量源和星座调制器的标准配置来创建 PSK 符号,这些符号使用 VERT2450 天线以 2.45GHz 传输。这些天线在 2.4 - 2.5 GHz 和 4.9 - 5.9 GHz 的频率范围内工作。由于我有一台只有一个以太网端口的台式计算机,我使用的是 NetGear GS108 交换机,它具有 16Gbps 的带宽和 10Mbps 的端口转发速率。当前的软件设置如下图所示:
我使用只有零的向量作为输入,因为我有兴趣探测我的收发器是否正确检测到一个星座。但是,正如您从左侧的图片中看到的那样,我在星座点之间有连续的跳跃。我对我的设置有几个问题:
- 每种调制方案的正确波特率是多少?这意味着对于 BPSK、QPSK、8PSK 和 16 QAM,我应该每秒使用多少个符号。
- 由于 USRP N310 的默认采样率为 125MSamples/秒,而我的台式机只能处理 5MSamples/秒,因此我的抽取率为 25(sample_rate_usrp/sample_rate_desktop)。我应该在收发器的每个块中分配的 sps -samples per symbol- 参数的值是多少?
- 什么时候需要 CMA 均衡器?由于 USRP 的位置是静止的,因此不会因多普勒效应而发生频率变化。因此,不需要均衡器。为什么这个推理不正确?我抑制了均衡器,星座图显示为一个圆圈。
- 多相时钟同步是否真的使接收信号与发射信号同步,或者我可以补充它并用均衡器代替它?
如果有人可以帮助我为所有这些问题带来一些启发,我将不胜感激。
提前致谢
asn.1 - ASN.1 中隐式和显式标签的编码
我试图了解 IMPLICIT 和 EXPLICIT 标签实际上是如何以 DER 二进制形式编码的。
基本的例子很清楚。纯整数,
被编码为 TLV 三元组02 01 05
。在
隐式标签82
替换现有标签02
并形成另一个 TLV: 82 01 05
,并在
在原始 TLV 周围添加了一个包装器:A3 03 02 01 05
.
现在我在看一个更复杂的案例
它被解码成
我的问题是,我怎么知道A1
是一个隐式标签[1] IMPLICIT SEQUENCE
,它取代了原始标签10
,并且包含五个 TLV 元素(序列),还是一个包含这五个元素的显式标签?是什么A1
?
显式标签可以包装多个 TLV 元素吗?
“构造”标志(位 6)指示标签是显式还是隐式,这是否正确?还是我需要查看包装纸的长度和被包裹的东西?
我不假设二进制数据是正确的,所以另一种可能性是A1 40
环绕以下序列30 0D ...
,长度不匹配并且必须拒绝数据。
asn.1 - PKCS#7 CMS - 消息摘要计算过程
我正在研究 RFC 5652,以便确切了解如何编码/解码 PKCS#7 ASN.1 数据。
我不明白当存在“signedAttrs”字段时如何创建签名:
消息摘要计算过程的结果取决于 signedAttrs 字段是否存在。当该字段不存在时,结果只是如上所述的内容的消息摘要。但是,当该字段存在时,结果是包含在 signedAttrs 字段中的 SignedAttrs 值的完整 DER 编码的消息摘要。由于 SignedAttrs 值(如果存在)必须包含 content-type 和 message-digest 属性,因此这些值会间接包含在结果中。
通过阅读上面的文字,我感到困惑: SignedAttrs 字段包含消息摘要和内容类型值,但消息摘要可以在计算后出现,并且必须计算摘要:
eContent OCTET STRING + SignedAttrs 字段的完整 DER 编码(包含消息摘要字段)。
在下面的示例中,有一个 PKCS#7 已签名数据结构,其中正在对信封数据内容字段值 + 已签名属性进行签名。messageDigest 值究竟来自哪里?
signal-processing - GNU Radio 中的 SNR 和 BER
我必须在 gnuradio 中确定接收信号的质量,为此我可以根据误码或信噪比 (SNR) 来测量它,你能告诉我哪个更容易执行吗?这两个参数中的哪个读数? gnuradio 会更准确吗?
javascript - 如何将参数传递给 ldapjs exop() 函数?
我正在尝试使用此 RFC中定义的“更改用户密码”扩展操作,该操作声明它采用三个可选参数的序列。但是,似乎 ldapjs 的 client.exop() 函数只允许我为它提供字符串或缓冲区。
这是我的尝试:
这是由此产生的错误:
我应该如何将这些值编码为字符串?ldapjs 文档几乎没有提供有关将参数传递给扩展操作的信息。
asn.1 - 如何从 BER 创建 ASN.1 规范文件?
我们从供应商那里收到了一份用 TLV 编码的 CDR 规范文档,我们正在尝试为它构建一个解析器。据他们说,他们的 CDR 是按照 ASN.1 BER 编码格式化的。然而,当被问及 ASN.1 规范文件时,他们说他们没有,他们的文件就是他们所拥有的。
虽然不那么精通 ASN.1 语法,但我正在尝试将该规范逆向工程为 ASN.1 规范。
它们的标签和长度可以编码为 1 或 2 个字节。
让我分享一些示例记录的前几个字节:
首先,这真的符合BER ASN.1吗?因为在阅读ASN.1、BER 和 DER 子集的外行指南之后,对于 2 字节(或更多)的标签,第一个字节的 5-1 位必须设置为 1,并且 804e 和 8002不适合这个。
其次,如何将上述格式转换为 ASN.1 规范?
谢谢你。