Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中获得模和模?_Java_Ssh_Cryptography_Rsa_Ssh Keys - Fatal编程技术网

如何在java中获得模和模?

如何在java中获得模和模?,java,ssh,cryptography,rsa,ssh-keys,Java,Ssh,Cryptography,Rsa,Ssh Keys,是否可以从ssh公钥(如以下公钥)中检索模数和xp: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9t1iUplXCsaamE3QPxiB4G1BTZHH4oK4Ti2pHgfOEDLsVWrhycX+f8GbNnRATONkGjoDH9WWku1Eibbd2qpSfRrYowVmE85tEqXrT1mjPMSXrdKrLa4a9NLgHtaROZPNTxkuBHjdQkfgMnId/ryUw3maj+kHW1lUEx+wpALyLNTNJP0RFgO72x47

是否可以从ssh公钥(如以下公钥)中检索模数和xp:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9t1iUplXCsaamE3QPxiB4G1BTZHH4oK4Ti2pHgfOEDLsVWrhycX+f8GbNnRATONkGjoDH9WWku1Eibbd2qpSfRrYowVmE85tEqXrT1mjPMSXrdKrLa4a9NLgHtaROZPNTxkuBHjdQkfgMnId/ryUw3maj+kHW1lUEx+wpALyLNTNJP0RFgO72x47wNELvolcZttaSTqrncH1ClcY2WQ4kmfOvzAgo1sRtRolc/6k17Oeo7eQRWgT4IwjLS9hYnXNicCn5Hg313iryJJ6Zq/eR/ormM7t8LMH8479qzdxinSk3GNCCw3xRDzYD/zcLsAGKwUnA+0g0JUdxEzQpGMHr user@mc-s08347cdc1.local
我需要以某种方式从上面的密钥获取这些参数,这样我就可以执行下面的代码来生成并获取java中的公钥

RSAPublicKeySpec ks = new RSAPublicKeySpec(modulus, pubExp);
RSAPublicKey pubKey = (RSAPublicKey)keyFactory.generatePublic(KeySpec);

显然,SSH密钥使用中定义的格式。因此,您可以简单地对数据进行base64解码(例如,使用Apache Commons编解码器库),然后自己解析二进制结果

这是base64解码字符串的输出(您可能需要后缀2、3或4'='个字符,解码器才能工作,您需要4个base64编码字符的倍数):

现在让我们分析一下(第一部分是Big-Endian格式的四字节长度):

最后一部分是模量。它是129字节而不是128字节,因为库似乎使用有符号整数。由于1024位模数始终以设置为1的第一位开始,因此可以确保在无符号表示的左侧有一个
00
值填充字节


快乐的编码,从中获取的一些信息。

请您至少投票或接受我之前的答案,jonney?很好!谢谢,我会试试的
000000077373682D727361000000030100010000010100BDB75894A655C2B1A6A613740FC620781B50536471F8A0AE138B6A4781F3840CBB155AB87271
00000007 7373682D727361 // "ssh-rsa" string in ASCII
00000003 010001 // public exponent, the fourth number of Fermat or 65537 in decimals
00000101 00BDB75894A655C2B1A6A613740FC620781B50536471F8A0AE138B6A4781F3840CBB155AB87271