Tôi đang cố ký kỹ thuật số XML trong Perl bằng cách sử dụng mô-đun Crypt::OpenSSL::RSA
. Tôi đang tải khóa cá nhân từ một tệp. Khóa riêng được tạo từ kho khóa bằng Java.Chữ ký số XML trong Perl
Dưới đây là mã của tôi Perl:
my $private = 'my_priv.key';
my $private_key = read_file($private);
print "my private key text is\n", $private_key;
Output, không đặt toàn bộ chủ chốt ở đây, chỉ cần vài dòng đầu tiên :-)
> -----BEGIN PRIVATE KEY----- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKAuqJ1ZkxHZStfSt0CdEsaSYuLO
> 6zDiTpt60asVLWpLe2bf...
my $rsa_priv = Crypt::OpenSSL::RSA->new_private_key($private_key);
print "my private key is\n",$rsa_priv->get_private_key_string();
Output :
> -----BEGIN RSA PRIVATE KEY-----
> MIICXAIBAAKBgQCgLqidWZMR2UrX0rdAnRLGkmLizusw4k6betGrFS1qS3tm3+97
> wMvFXCx0Od8eb
Kết quả của $private_key
và $rsa_priv->get_private_key_string()
là khác nhau. Nó có phải cư xử như thế không?
Có ai có thể ký XML bằng cách sử dụng Crypt::OpenSSL::RSA
không?
chỉnh sửa:
Tôi đang sử dụng mã java để trích xuất các khóa bí mật, mã như sau 'KeyStore ks = KeyStore.getInstance ("JKS");
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.....");`
sử dụng cả java và perl vì xml tôi đang cố đăng nhập nằm trong perl (đó là toàn bộ hệ thống lớn) và kho khóa nằm trong java.
Lần đầu kỹ thuật số ký bất cứ điều gì và xml chữ ký số của tôi không được chứng thực ở tất cả các hệ thống nhận
Có lẽ nó có thể giúp đỡ nếu bạn thêm 'lệnh keytool' sử dụng để tạo ra khóa bí mật Java. –
chỉ cần thêm mã được sử dụng để tạo khóa riêng – qateey