Perl中的XML数字签名
我正在尝试使用
Crypt::OpenSSL::RSA 模块在Perl中对XML进行数字签名.我正在从文件中加载私钥.私钥是使用Java从密钥库生成的.
以下是我的Perl代码: my $private = 'my_priv.key'; my $private_key = read_file( $private ); print "my private key text isn",$private_key; 输出,而不是把整个键放在这里,只是少数第一行:-) > -----BEGIN PRIVATE KEY----- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKAuqJ1ZkxHZStfSt0CdEsaSYuLO > 6zDiTpt60asVLWpLe2bf... my $rsa_priv = Crypt::OpenSSL::RSA->new_private_key($private_key); print "my private key isn",$rsa_priv->get_private_key_string(); 输出: > -----BEGIN RSA PRIVATE KEY----- > MIICXAIBAAKBgQCgLqidWZMR2UrX0rdAnRLGkmLizusw4k6betGrFS1qS3tm3+97 > wMvFXCx0Od8eb $private_key和$rsa_priv-> get_private_key_string()的结果不同.它应该表现得那样吗? 有没有人能够使用Crypt :: OpenSSL :: RSA签署XML? 编辑: 我正在使用java代码提取私钥,代码如下 keypass = sPass.toCharArray(); FileInputStream fis = new FileInputStream(store); ks.load(fis,sPass.toCharArray()); fis.close(); String eol = System.getProperty("line.separator"); Key k = ks.getKey(alias,keypass); System.out.println("....Generating the Private Key....."); String encKey = new BASE64Encoder().encode(k.getEncoded()); System.out.println("Encoded Key: " + encKey); BufferedWriter myKey = null; myKey = new BufferedWriter(new FileWriter(alias + "_priv.key")); myKey.write("-----BEGIN PRIVATE KEY-----" + eol); myKey.write(encKey + eol); myKey.write("-----END PRIVATE KEY-----"); myKey.close(); System.out.println("....Private Key Generated.....");` 使用java和perl,因为我试图签名的xmls是在perl(它是一个完整的大系统),而密钥库是在java中. 第一次对任何内容进行数字签名,我的数字签名xml根本不对收件人系统进行身份验证 解决方法
是的,输入是X509键,输出是RSA密钥. openssl rsa -in my_priv.key给出了相同的结果. 如果您对这些内容一无所知,那么最好使用高级库. > XML-Sig (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |