2011-05-23 89 views
1

我面临将PGP公钥转换为RSA公钥格式的问题。遵循PGP格式的公钥,需要将其转换为XML格式。将PGP公钥转换为RSA公钥XML格式

请帮助我,如果你们中的任何一个遇到过这种情况。

-----BEGIN PGP PUBLIC KEY BLOCK----- 
Version: GnuPG v1.4.1 (MingW32) 

mQELBE2kxxwBCADjWSW/F/h9VkV9JizFwKXPzg1YlXyEmN/dGKTVBidOI3ZcrhQd 
v3qhcWtNmBXz1BpO+YLy41AfJzysKNHrs23sMh8nKWlMSmKZZqVpimXCcCrKQ8Hi 
uNNxcRN/hBdy5R4MN/N62hbFTgoZpGmrQjOXDSPozDeckQE7DjkGYvQAT63dT3jC 
F99im/KC2GfHDxVh70+881ot+vUxKC6GRZAz6wth90M/5FzbKQt0GmFrq/XapqxK 
ZQI5LLMzahdGzJTGEbfs8SlH6OAqZsgjgEKYaW3EooQVbrvGrdqna6PBkLbroCOl 
EH/h6W9h42dFLb2OSV9OES7oidQATqzNC+oXAAYptE9CdWNrIENvbnN1bHRhbnRz 
IC0gTXkgTWVkaWNhcmUgQWR2b2NhdGUgKE1NQSkgPHByb2RzdXBwb3J0QGJ1Y2tj 
b25zdWx0YW50cy5jb20+iQE0BBMBAgAeBQJNpMccAhsDBgsJCAcDAgMVAgMDFgIB 
Ah4BAheAAAoJEJrpFtACLTdGtKEH/3G4pB4UeiEsMwDYDO1YF4jkz2lqbItmCGek 
WuVg7G1LGHgZm2cJVH0xSuTKY4WpaX1RX5iWhVgz0dSrDNkjOi3hlZJ49VzXZi8T 
abQ+Uiqfu7QIWvSOmjhxdrl8FuC2ZpZLRWB93VFNGKM1qYrjphTW1uMCnU4WtkD0 
e8d9M3VCC/uL72a0+0R2El80W55yZxvHD6JHlp82Gdn+sqsAEnUcg5c+USLcehgc 
v931SE4VfcxW4PELcOp0gKb00Q4bWp09Is/NVR+kVUax5EaT2Wo5oe7cx8OgrzMs 
5daypwibGoFCloFE4LH59hbahoM5s8Ya59YAYEBWA1u68DCBYqS5AQsETaTH1gEI 
AMCvsxsZcm5kIdbXATuPJQ1PKDejeeF0t4f27vDqR9SOZKas2ExpWbmjSeF9EdJ5 
e1QKm88/WSXeUuE4Sn2xBfZXfRvhWndQIs6pOi8licuht1WiuYWBlvPefMO1e15G 
fHrghhQ4RcTLIG8SWDcVFbsnr92RDy8NV7qZd/N08dZ+IS7z2JV8hp8Ts0a9T01q 
p1h6lCbr9CAABQmlihMQ+hM4LO9DjqDeR85I1NWNpODeoks8zx86S9xOlEBxmWg2 
G90ahBxm3IsYW9KtDd+oro6s6GQroo+5C0bcHyVL6Dylmhkn4CYQ99WAzMtw3gQ8 
IDFrLO7Vw1kMc+vR4LGMPpkABimJAR8EGAECAAkFAk2kx9YCGwwACgkQmukW0AIt 
N0ZBxggAqLFdkvVHgsK8wx6WyZalRpimirVQxStPT8WWlGyg8zJIGxbAzC6f4Fml 
IuXGQYse+D8LfL7leWCyGu71+IZb22XCQ7ZO2ogWl6txUO5jWgPkoPBi0XMK/tLu 
pT1WP8/lzrh1XQgwvLME+dcTMeuqgV5uDUmhn2OX9j8N3iyZeOV84cFrYmgrNfHn 
lHlGx2kyXhgUwfK6noIUljprImIjlntGL0sh6lxTiu5bWMpXJVeJdRjNXuf4G+2/ 
mLU7BfsNP5jDr3+isTTLcOlZR0PHiAywIFPA2VOMTscB6nNEHiu8FLNFnY+QgboT 
uC4E2095FYSXRMXc/rif7+d5+NApAg== 
=+Q6Q 
-----END PGP PUBLIC KEY BLOCK----- 

这需要转换为RSAKeyValue XML格式,如下所示。

<RSAKeyValue> 
    <Modulus>151Vw6Kq51bpblahblahblahWCkPmD345ncclzFrmeb9fjpE+B6VsIAqP3kahu00p33BmFpDpXOcgi uRC2En0HoGqyZB9ifvNlPhT7flZ1uVuC9JtywG3FmYRsqbpJuT7VTIAHYExU6T/FyRuyIbhdUVwhue7ARaObsEWszE1IoM7+XcYYs=</Modulus> 
    <Exponent>AQAB</Exponent> 
    <P>+7OU6YErvfk84O/2bX5s2753xE+pdiyJl3j8gy4zMh4UKeKVhyxgSJJCvNTl9XVIya6xnCWPkHVy8ylNqyLiHQ==</P> 
    <Q>20v7/nODe/jKcbsiYEwzGXp0ZyiG17JqzOBKrDFu6bwPiAEHzZln0CYfUn0E hJdCmetaq9WFXk27mbK3Z6aBxw==</Q> 
    <DP>RpoN6B26dlRGFlZZCkePI2he0esCfsppYdqnAejgpWs4 frM2/C6fZ1vXan5RbrOSUjg1S7ZhecToFHr+dUWYpQ== </DP> 
    <DQ>ayaHbF7YwfxgPo3nUBIrbamNstH0gPQmhxCYq+ZDgWV oWVXXkDgCp4vZBh8b1AVsf3SmCwv7bIaiwYi3YKfVBQ==</DQ 
    <InverseQ>YjvieMYPEDdUHqSZRWAsFlEESd3NczFCrbBaS HzbsbOZeDrccvUfoOP2jeIhuMt0qQwMqXY/NJau9Ldwdx7xNw==</InverseQ> 
    <D>wEg6bM5LVSWoQgWpoldz5dQWfQjqQVc8WzKpDA HQ8ejsm0ug4ZwRcRRnKZs3o7OTsiAJCfjqT9ij1gKMoeLrXIM1 RDOcAYBxI0qwWdRrr3sbar7ntMYmy4tlTTf8/G+ypw+CJi1gz2umswcx4MHhNTUGTUHSmjEjDTFfh3sW64k= </D> 
</RSAKeyValue> 
+1

我不认为你可以做到这一点1:像你想要1。它们是不同的加密标准,对不同的组件使用完全不同的密钥。有人请纠正我,如果我错了。 – 2011-05-23 12:37:58

+0

@DarkBobG:我也是从其他论坛上看过类似的评论。感谢您的时间和评论+1。 – AbrahamJP 2011-05-23 14:13:50

回答

5

虽然通常它可以从一个OpenPGP的RSA密钥提取关键材料(请注意,OpenPGP的也得到使用DSS/Elgamal的键),您的例子是有些不一致,因为它规定公共的OpenPGP密钥和专用 RSA/XML密钥。所以我认为在继续之前对这些东西进行排序是有意义的(因为从公共RSA密钥中获得专用RSA密钥是不可能的)。

+2

严格地说,这不是不可能的,它只需要一点时间,这就是全部:) – 2011-05-23 18:05:23

+0

@KenJhonson:我试图传达的是将OpenPGP公钥转换为RSA公钥XML格式。通过更改,我粘贴了私钥XML文本。感谢您指出。所以我可以从你的回应中了解到,它可以用一些自定义代码检索公钥。 – AbrahamJP 2011-05-23 18:13:28

+1

@AbrahamJP:是的。在RFC 4880中定义了OpenPGP密钥的结构。基本上,您应该执行以下操作:1)如果以base64编码形式获取密钥,则解码该密钥; 2)逐个读取密钥文件的内容;搜索RSA密钥和/或RSA子密钥包(取决于任务的要求),3)从中提取n和e值,4)将它们包含在合适的XML结构中。可能有些OpenPGP API供应商提供这种功能......但我不能说这确实是一项复杂的任务。 – 2011-05-23 20:42:49