2011-05-23 125 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