问题标签 [asn1]
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.
python - ParseError:第 1 行第 1 列的 ASN.1 语法无效:'>!<"':预期的模块引用
我是 asn1 的新手,我的议程是将 python 字典转换为 .asn 格式。当我运行以下代码时,出现以下错误
ParseError:第 1 行第 1 列的 ASN.1 语法无效:'>!<"':预期的模块引用。
python - 如何在 Python 中使用 ASN1 库解码 .BER
我有一个无法解码的 .BER 格式的编码文件。
搜索后,我知道我需要使用 ASN1 库才能解码此文件并使其可读。
有人可以指导我如何在 python 上使用 ASN1 库解码 .BER 文件吗?
我在网上查了一下,发现有一些在线 ASN1 解码器可以正确解码我的文件。但是,我将无法使用它们,因为我需要自己解码而不使用在线工具。我不知道如何在下面的脚本中获取此标记和值。
import asn1 import re import os import future Input_directory=open("D:\Encoded_Nokia.ber","rb")
对于 Input_directory 中的行:decoder = asn1.Decoder() output=decoder.start(lines)
tag,output=decoder.read()
这些是我得到的错误:
rsa - asn1c编译的ASN1模块解码失败?
我正在尝试使用 asn1c 解析 RSA(私有)密钥。我基于https://www.rfc-editor.org/rfc/rfc3447的 asn1 模块,它看起来如下(我试图只使用私钥和公钥部分):
但是,当我编译模块并尝试使用以下内容解析 .der 私钥时,它以 RC_FAIL 结束。
我一直试图在 asn1 模块中找到错误,但没有运气。使用 openssl 打印出 .der 文件,似乎与 RSAPrivateKey 匹配。我还测试了错误的文件读取,但使用了缓冲区匹配和二进制读取模式。
java - Java 转 ASN1 可读字符串
我们正在开发一个我需要使用 ASN1 的项目。我们决定使用 BC 来实现。
我必须使用一个复杂的 ASN1 定义文件,到目前为止一切顺利,我能够创建我的类并使用 BC 来完成我的集合、序列等......这将需要很长时间,但我们会管理。生成我的 DER TLV 也没问题。
我想做的是能够从我的 ASN1 对象创建一个可读的 ASN1 字符串。通过可读,我是这样的:(示例取自asn1 playground)
有没有办法在我的 Java 类中提供相关信息(如属性名称、序列属性的名称等)并将其写入这样的可读内容?
是否有 BC 方法可以做到这一点或另一个库?
go - 通过表单发送 ssh 私钥会导致“asn1:语法错误:数据被截断”
我有一个网络表单,允许用户发布私钥、主机名、用户名,它允许我使用私钥通过 ssh 连接到“主机名”并运行测试命令。
我正在使用 golang 和 ssh 包进行这个测试。
是的,我知道通过表单发送私钥的危险,但这对我来说是一个内部项目,不会真正公开使用。
所以,继续,这就是我的代码的样子
这段代码运行时,会导致如下错误
2019/11/15 23:57:14 http: 恐慌服务 [::1]:62783: asn1: 语法错误: 数据被截断
奇怪的是,如果我使用 阅读自己的“id_rsa.pub” io/ioutil
,则不会发生错误。但只有当我粘贴“id_rsa.pub”文件的内容时才会发生此错误。
我不知道为什么会发生这种情况,我不知道如何解决它。
我检查了 id_rsa.pub 文件内容的字节数组输出以及表单值,它们都相同且长度相同。
我怀疑错误来自https://golang.org/src/encoding/asn1/asn1.go
所以我试图更深入地研究如何解决这个问题,但到目前为止还没有想出太多。
在这里询问我如何解决此错误。
编辑:
今天早上我一直在研究更多,发现了一些更有趣的结果
如果我运行以下代码,我不会收到任何错误。但是,如果我将下面的私钥字符串发布到 Web 表单中,然后使用下面的相同代码但使用 http 请求 FormValue 而不是仅仅声明一个字节切片,我会得到上面提到的 asn1 错误。下面的示例是一个测试密钥。
输出
2019/11/16 11:04:11 块:RSA 私钥 2019/11/16 11:04:11 map[] 2019/11/16 11:04:11 [48 130 4 164 2 1 0 2 130 1 1 1 0 213 0 152 15 73 240 7 87 162 114 194 234 45 84 130 9 85 7 95 176 198 251 169 58 203 163 163 2 192 75 109 2009 2009 2009 200 120 120 120 10 195 37 24 24 189 125 27 54 78 217 229 189 64 207 138 199 49 49 255 180 125 75 93 0 220 132 212 212 214 37 43 19 181 144 89 80 37 80 37 163 12 242 194 170 170 155 234 155 234 155 234 172 185 234 172 185 177 1 186 48 191 174 238 204 193 75 215 5 123 138 177 67 43 126 102 153 69 24 25 240 148 141 236 52 29 160 204 122 172 71 71 66 43 8 167 19 218 153 141 113 31 226 169 118 180 18 172 244 178 151 211 253 82 203 3 46 145 77 142 223 2 46 248 248 251 164 251 24 120 120 127 82 127 82 13 250 162 162 162 162 162 55 143 120 88 51 102 11 170 180 180 181 181 181 181 181 181 89 224 224 224 224 69 148 93 253 253 253 253 246 146 146 1111111111 77 211 202 63 159 52 255 29 248 148 41 237 159 120 25 40 204 241 39 154 123 146 79 77 196 221 167 16 42 24 224 244 245 1981 244 2451173 159 118 135 93 205 190 52 100 11 94 6 76 76 76 73 35 166 197 123 35 112 120 152 220 174 217 122 10 94 51 210 157 2 3 1 0 1 0 1 2 130 1 0 63 2 130 1 0 63 218 318 3 187 144 192 192 194 182 194 182 194 182 129 236 136 66 186 120 152 207 146 124 79 3 247 97 13 173 9 218 195 70 89 76 165 31 164 204 52 20 105 178 132 159 50 150 186 26 249 156 66 134 108 126 240 168 108 226 219 56 62 122 234 135 13 216 196 174 214 247 61 177 25 42 148 204 140 28 215 86 133 65 205 41 46 35 237 128 52 70 117 156 25 12 253 37 188 223 157 26 130 28 60 193 82 191 113 14 212 151 111 216 38 212 129 142 243 56 134 129 133 172 171 89 99 46 127 83 134 146 26 181 142 57 186 249 145 17 157 39 253 37 185 230 25 132 162 59 175 136 187 215 251 176 75 70 231 253 19 86 147 106 158 52 100 193 231 203 249 119 254 33 194 240 113 92 131 187 65 89 90 63 126 83 225 56 177 211 137 74 155 220 177 104 203 106141 183 150 24 159 123 222 222 229 107 222 168 41 55 0 84 192 173 69 177 227 134 196 27 39 90 28 88 138 138 138 124 159 56 254 111 5911 59 114 160 217 114 160 217 10 253 207 253 207 253 207 183 225 66 217 13 47 186 90 186 90 254 82 21 59 221 171 240 13 106 34 134 168 235 62 1 2 129 129 129 0 249 28 59 180 159 49 111 179 128 82 9 178 195 195 195 199 223 223 246 246 246 255 34 136 248 187 248 187 226 226 226 183 80 182 27 16 247 199 134 108 140 13 31 158 127 210 210 45 172 1828 252 82 60 230 230 2231 100 136 5 31 164 246 0 178 127 59 59 211 211 245 219 50 191 134 134 134 178 103 113 113 113 109 238 106 238 106 238 106 44 249 124 155 149 124 155 140 155 140 155 140 184 166 158 74 58 176 8 155 3 108 105 124 106 66 66 66 251 146 173 197 195 250 250 183 168 87 244 200 19 64 10 184 10 184 94 94 172 74 172 74 100 187 79 79 201 188 22 228 180 240 239 129 76 1 58 133 168 65 115 237 70 128 13 179 229 144 56 82 154 92 97 137 196 61 152 41 186 145 8 61 511 23 201 102 28 119 6 147 133 36 186 157 169 120 245 81 81 249 172 104 93 98 96 86 54 231 122 205 178 44 147 165 6 87 105 242 179 191 230 166 112 57 244 148 153 204 219 173 143 194 71 182 77 29 112 82 132 68 8 183 178 169 200 138 216 46 65 49 37 37 214 96 198 78 184 78 184 71 120 145 89 7 138 138 138 134 134 134 134 236 157 132 36 173 17 93 179 93 153 153 152 152 171 225 193 29 129 129 129 129 129 129 0 142 142 142 142 141 32 32 32 129 128 227 170 87 30 228 86 112 0 173 222 158 79 207 244 111 218 28 167 194 56 84 79 236 75 220 245 220 245 110 90 90 253 143 143 243 241 38 180 113 180 113 4 133 4 133 134 134 134 134 134 134 80 184 80 18 97 113 97 113 97 113 230 161 161 63 41 235 72 123 78 75 212 36 80 248 248 236 151 113 99 62 4 151 140 232 117 15 12 197 69 211 143 143 143 143 179 220 220 106 132 23 199 106 106 106 106 101 66 101 68 140 40 40 40 40 4 199 229 237 237 142 237 142 242 242 242 242 242 242 242 242 242 242 2391 111 111 239111 111 111 239111 111 111 239111 111 111 239 198 47 88 125 228 12 88 6 138 112 234 199 199 130 147 73 218 88 126 177 143 55 190 182 37 2 129 128 21 17 150 104 234100 163 144 42 181 218 176 18 28 112 128 186 208 233 233 243 171 184 39 171 100 168 1 255 123 185 232 127 53 47 202 96 122 245 163 163 162 113 194 194 194 108 72 144 108 72 144 116 117 244 117 224 110 224 110 224 110 8 14 191 185 44 999 999999999999999999999999999999999999999999999999. 15 57 252 211 207 141 16 64 228 57 110 44 160 35 161 202 254 138 38 5 55 32 28 238 128 175 59 37 197 132 137 170 126 89 171 10 6 57 22 45 184 64 167 80 213 229 253 216 97 47 245 56 161 51 19 142 3 79 114 110 94 225 198 160 146 171 118 16 112 76 69 159 1 2 129 129 0 146 125 104 230 161 38 131 49 43 63 55 120 162 242 9 135 203 88 233 46 53 10 163 157 198 66 1 219 141 142 207 126 139 42 195 107 199 104 199 104 186 220 78 164 72 177 193 221 221 223 223 223 241 16 35 22 28 181 75 118 169 34 85 169 34 85 169 230 230 97 123 206 123 206 206 82 206 82 193 218 211 182 243 182 255 68 187 187 181 187 181 187 181 181 181 181 181 181 181 181 181 181 181 181 181 251 91 49 173 252 90 238 197 197 128 105 43 172 25 253 136 160 24 125 161 54 134 125 180 69 87 64 3 87 123 16 219 67 6225 146 87 18 185 182 66 87 60 43 77 185 109 44 123 29 202 80 97 210 159]
python - 如何从 ASN.1 结构 (pyasn1) 中删除字段?
基本上,我正在寻找这样的东西:
除了,显然,类中不存在这样的功能remove
。del x[2]
也不起作用,因为该__del__
功能没有实现。
python - 如何从 asn1 数据文件中提取数据并将其加载到数据框中?
我的最终目标是将从PubMed收到的元数据加载到 pyspark 数据框中。到目前为止,我已经设法使用 shell 脚本从 PubMed 数据库中下载了我想要的数据。下载的数据为 asn1 格式。以下是数据输入的示例:
这就是我卡住的地方。我不知道如何从 asn1 中提取信息并将其放入 pyspark 数据框中。任何人都可以提出这样做的方法吗?
asn1 - ASN1 全局约束
下面的模块有sKeyPkgAttrs (global) 和SKeyAttributes (local)。我想在这些中添加一些属性。如果一个属性存在于 sKeyPkgAttrs 中,那么它绝不能存在于 SKeyAttributes 中——反之亦然。
我的一些属性是可选的,一些必须出现在这个模块中。
问题:是否可以通过检查属性是否出现在上述其中之一中的方式来约束此模块,因此不能将其放入另一个中?如果一个属性出现了(当它必须是时)
例如:
- 我在 sKeyPkgAttrs 和 SKeyAttributes 中放置了相同的属性 - 全部作为 OPTIONAL
- 约束“WITH COMPONENT”检查是否至少存在一个属性
- 其他一些约束检查属性是否不重复
- 其他一些约束检查是否必须存在属性
x509 - 将 X.509 证书从 DER 编码转换为 PER 编码
我们需要通过 QR 码(或任何二维条码,此时,尽管 PDF-417 似乎无法存储足够多的数据)来传输 X.509 证书。目前,我们将证书作为 PEM 编码(这是 DER 格式的 X.509 证书的 base64 编码字符串表示形式,加上开始和结束标签)写入 QR 码。我们面临的问题是生成的字符串太长了。
虽然我们可以去掉开头和结尾的标签,但这不会有太大的不同,这就是为什么我去 Interwebs 寻找一种方法来压缩我们的证书。
事实证明,DER 只是一种可能的编码。根据Wikipedia,还有 PER(带有变体 UPER 和 APER)。我下载了一些样本,如果证书的读者知道 ASN.1 模式(我们可以在我们的例子中管理它),我们似乎可以节省大约 40-45% 的字节。这足以使 QR 码再次可扫描。
但是,我找不到将 DER 转换为 PER 的方法。有谁知道如何做到这一点?
或者有谁更好地了解我们如何将 X.509 证书传输到用户的手机上,而无需在中央存储库中提供它们?