标签: der

使用 Crypto++ 将签名从 P1363 转换为 ASN.1/DER 格式?

我有一个以这种方式创建的签名:

size_t siglenth = _signer.MaxSignatureLength();
QByteArray signature(siglenth, 0x00);
signature.reserve(siglenth);
siglenth = _signer.SignMessage(_prng,
        (const CryptoPP::byte*) (message.constData()),
        message.length(), (CryptoPP::byte*) signature.data());
Run Code Online (Sandbox Code Playgroud)

我的签名大小为 64,包含:

ECCD530E5F232B7C566CA5322F990B3D55ED91156DF3845C4B9105BFE57606DDD68F332A0A5BF7CAB673E4970D10109B72F11457ACD78CED11457ACD7894ED

从我在dsa.h文件中阅读的内容来看,这个签名目前是DSA_P1363格式。我需要将其转换为DSA_DER格式。

要执行此操作,我尝试:

QByteArray derSign(70, 0xFF);
size_t converted_size = CryptoPP::DSAConvertSignatureFormat(
        (CryptoPP::byte*) (derSign.data()), sizeof(derSign.data()), CryptoPP::DSA_DER,
        (CryptoPP::byte*) (signature.data()), sizeof(signature.data()), CryptoPP::DSA_P1363);
Run Code Online (Sandbox Code Playgroud)

此转换的输出如下所示。它似乎只是签名的第一部分。它的大小为 8,包含:

300D020500ECCD53

怎么了?

谢谢。

c++ cryptography crypto++ der

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

使用OpenSSL从bash中生成n,e,d,p,q值的RSA私钥

我已经计算了RSA密钥的n,e,d,p,q值.现在,如何使用openssl命令行工具生成私钥文件(pem或der)?

我在考虑

openssl asn1parse -genconf asn1.cnf -noout -out asn1.der
Run Code Online (Sandbox Code Playgroud)

但我无法理解如何构建conf文件.

openssl rsa asn.1 der private-key

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

DER 用 Ja​​va 解码 ECDSA 签名

我已经用 Java 生成了一个 ECDSA 签名,我想从中获取 R 和 S 值。据我了解,我生成的签名是 DER 编码的。有人可以向我提供一些 Java 代码(可能使用 Bouncy Castle)来将 R 和 S 值检索为 BigIntegers 吗?

注意:如果有帮助,我通过 JCE 的 Signature 类使用内置提供程序生成了签名,我的 P_256 EC 密钥对的签名长度通常在 70 到 72 字节之间徘徊。

java asn.1 der ecdsa

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

如何读取也用bouncycastle在DER中编码的PKCS8加密私钥?

我已经尝试过以下问题的答案:

有弹性的城堡:PEMReader => PEMParser

使用bouncycastle / spongycastle读取加密的私钥

但是由于我调用时我的加密密钥已编码为DER

Object object = pemParser.readObject(); 
Run Code Online (Sandbox Code Playgroud)

对象为null。

我可以使用openssl的命令将其转换为PEM(它也会解密密钥)

openssl pkcs8 -inform der -in pkey.key -out pkey.pem 
Run Code Online (Sandbox Code Playgroud)

但我需要读取其原始文件中的密钥

java cryptography bouncycastle pem der

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

iOS中的PEM编码证书转换

在我的应用程序中,我获得了一个 PEM 编码的证书,需要将其转换为不同的形式,以便以后将其用于 JWT 验证目的。我正在寻找的结果是证书中包含的公钥的 SecKey 表示、PEM 公钥字符串或转换为 DER 证书。

我对此非常陌生,所以我不知道如何解决这个问题。我在谷歌上搜索并没有找到明确的解决方案,甚至 Apple 文档也只提到了 DER 证书。如果我理解正确,一种解决方案是在我的应用程序中使用 OpenSSL(这甚至可能吗?)进行转换,但我找不到任何关于如何实现这一点的有用资源,所以我希望能更深入地了解正确的做法.

在应用程序之外进行转换不是我的选择。

openssl rsa pem der swift

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

Bouncycastle DER长度IO错误:

这是我的方法:

import org.bouncycastle.asn1.ASN1InputStream;
import java.io.ByteArrayInputStream;
...
public static byte[] toDERBytes(byte[] data) throws IOException
{
    ByteArrayInputStream inStream = new ByteArrayInputStream(data);

    //Uses imported bouncy castle library:
    ASN1InputStream asnInputStream = new ASN1InputStream(inStream);
    byte[] derArray = asnInputStream.readObject().getEncoded();
    asnInputStream.close();

    return derArray;
}
Run Code Online (Sandbox Code Playgroud)

根据BouncyCastle文档,我看到 ASN1InputStream.readobject()实际上应该得到一个DER对象而不是ASN1.(据我所知,DER是ASN1的子类型)

然后我返回字节.

这有一半的时间,但另一半我得到这个错误:

java.io.IOException: DER length more than 4 bytes: XXX
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 为什么我只得到错误SOMETIMES?(我总是给它65字节的数据)
  2. 我如何解决它?
  3. 我是DER编码正确的方法吗?

java bouncycastle der

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

ASN.1 DER 标签值 0xA0 是什么?

以下是使用 ASN.1 DER 编码的证书示例

30 82 01 8F 30 81 F9 **A0** 03 02 01 02 02 01 01 30
0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 30 0D
31 0B 30 09 06 03 55 04 03 0C 02 43 41 30 20 17
0D 31 33 30 39 31 35 31 35 33 35 30 32 5A 18 0F
32 31 31 33 30 39 32 32 31 35 33 35 …
Run Code Online (Sandbox Code Playgroud)

asn.1 der

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

NodeJS:以DER格式验证证书

我正在使用crypto模块来验证证书,但是我的证书和公共密钥都是DER格式。似乎该crypto模块不接受此格式。

有没有一种方法(或模块)使用NodeJS将DER转换为PEM格式?我找不到任何内容,也无法使用命令行通过shell 调用openssl

更新:这与HTTPS证书无关。它是关于常规X.509证书的。如果您将问题标记为否定,请发表评论以证明其合理性。如果您无能为力,那就不要傻了。

javascript cryptography node.js der

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

使用 PHP 将 .key 文件从 DER 格式加载到 PEM

我有一个进行转换的代码,但需要使用本机 PHP 函数进行转换,因为它没有激活对运行 exec 的支持:

exec("openssl pkcs8 -inform DER -in 'archivo.key' -out 'archivo.key.pem' -passin pass:'lacontrasena'");
Run Code Online (Sandbox Code Playgroud)

有人可以帮我把它翻译成原生 PHP 函数吗?它可以是openssl或图书馆。

//更新

这是我使用 der2pem 函数的代码:

function der2pem($der_data) {
   $pem = chunk_split(base64_encode($der_data), 64, "\n");
   $pem = "-----BEGIN PRIVATE KEY-----\n".$pem."-----END PRIVATE KEY-----\n";
   return $pem;
}
$keyfile = 'myFileDER.key';
$keyFileContent = file_get_contents($keyfile);
$pemContent = der2pem($keyFileContent);
file_put_contents('llavetemp.pem', $pemContent);

$private_key1 = openssl_pkey_get_private($pemContent);

var_dump($private_key1);
Run Code Online (Sandbox Code Playgroud)

var_dump 返回布尔值 false

php openssl pem der

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

使用 PEM 格式的密钥创建 CSR

我遇到了一个我似乎无法解释的 CSR 生成问题,并且想知道是否有人可以帮助我执行命令,或者告诉我我正在生成什么。

我认为我正在生成 PEM 格式的 CRT 证书,但似乎我的密钥不是 PEM 格式!?

这就是我所做的,以及我得到的。我创建了一个 CSR:

openssl req -nodes -new -newkey rsa:2048 -sha256 -out test.csr

这会生成 2 个文件: privkey.pemtest.csr

现在,当我尝试更新某些服务器时,他们抱怨我的私钥不是 PEM 格式。nginx 和 apache 似乎对我的密钥很满意。

当我使用以下方法转换密钥时:

openssl rsa -in privkey.pem -out privkey.rsa.pem

有用 !?!

vimdiff 直观地显示了文件中的差异,可以看到不仅标题不同,而且内容也发生了变化(前 4 个字符之后)

因此我的问题

即使我指定不在创建行中使用 DER,密钥是否以 DER-PEM 格式创建?

openssl rsa sha pem der

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

标签 统计

der ×10

openssl ×4

pem ×4

asn.1 ×3

cryptography ×3

java ×3

rsa ×3

bouncycastle ×2

c++ ×1

crypto++ ×1

ecdsa ×1

javascript ×1

node.js ×1

php ×1

private-key ×1

sha ×1

swift ×1