有人可以告诉我这是什么代码所做的,我怎么能转换为红宝石最简单的方法是什么?

    #!perl

    use Convert::ASN1;

    my $asn1 = Convert::ASN1->new(encoding => 'DER');
    $asn1->prepare(q<
        Algorithm ::= SEQUENCE {
            oid OBJECT IDENTIFIER,
            opt ANY OPTIONAL
        }
        Signature ::= SEQUENCE {
            alg Algorithm,
            sig BIT STRING
        }
    >);

   my $data = $asn1->encode(sig => $body,
        alg => {oid => sha512WithRSAEncryption()});

这是一个片的 mexumgen ,Perl库其中符号update.rdf的Mozilla产品使用OpenSSL。

有帮助吗?

解决方案

此特定的例子中可以被转换为

data = ["308191300b06092a864886f70d01010d03818100" + body.unpack("H*")].pack("H*")

其中“308191300b06092a864886f70d01010d03818100”是从ASN表达高达BIT STRING字段(包括比特串的大小),组(“H”)制成的前缀的二进制数据转换成十六进制表示并解压缩(“H”)的十六进制转换字符串回二进制。

但更普遍的ASN转换器最好是使用OpenSSL :: ASN1,附带了红宝石作为标准库。这是完全没有证件,但一些人设法有一些使用它

其他提示

你有没有看着的Net :: ASN1

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top