本篇文章要结合上一节文章一起看。 青锋爱分享RSASpringbootPython整合 关注青锋,可获取更多青锋分享技术知识、下载开源源码。 码云搜索:青锋会有惊喜哦哦。3、RSA使用情况说明 通过python生成的公钥私钥格式PKCS1。 生成pem格式如下: 私钥头(BEGINRSAPRIVATEKEY) 私钥尾(ENDRSAPRIVATEKEY) 我需要将此私钥转换为DER编码的PKCS8未加密格式,以便与java服务器代码一起使用,特别是PKCS8EncodedKeySpec。我已经试过使用rsa和pkcs8命令的OpenSSL,如果有更简单的办法,没有特别需要使用openssl。opensslrsainIServerKey。orig。prikey。pemoutIServerKey。pkcs8。pemopensslrsainIServerKey。orig。prikey。pemoutIServerKey。pkcs8。pempubinopensslpkcs8inIServerKey。orig。prikey。pemoutIServerKey。pkcs8。pemnocrypt4、opensslRSA密钥格式PKCS1和PKCS8相互转换 RSA私钥格式PKCS1和PKCS8相互转换 RSA公钥格式PKCS1和PKCS8相互转换 以下转换基于openssl命令的操作;1。openssl生成pkcs1格式的私钥,密钥长度1024位,(PKCS1) 执行:opensslgenrsaoutprivate。pem1024 BEGINRSAPRIVATEKEY MIICXQIBAAKBgQDlLm5Kosybacfp8hzjn1fl2wT7Au2lm5SEtz6rwwSfq5KfY H8q1AOC92IwEpplNbrqYmOXQu6P07mg0lQOCvE5sdtmAvD2ex3wCef8lWmgdh5q Uo4OMcmoSz3IAp7FnMag1IelSfdronPBDxazp6NUmQZITsYK6CsElewIDAQAB AoGBAJkMdvFi9Kzc6YqMC0rfQJ3ZsvFOtsbmQVAMnQ8JWBCJ1O8dc60wRQgyb lFCyO7VXOmoIJqXJr2aER8bFtGYxy6jsMu3ynwMwbhcVmCWCmZoWuE5pZdEJk6 lOdOay7TkE45XWc7K9iZs2uuB7sylIvKHVxxit6FGePa4RAkEA9eVoAbxBv78 HyxRcStWKc3lmE4zYBGAb2IYx48UEN34nP5rI8Tusqsy7CZ3rvSMi1CpVlj2eQK FU8FzVFyjwJBAO6PU9q7il8NtecdvYBkDErlCawSeCdk9s79helT0Mrg9cWaVWFO n0UxgT55MPXWGdMRXUUOCNnMilawp7dKlUCQDpjGeu3GivmB2dDN0ad2nUIBftu s3SeWoB5RdL6T6liiyi5DfJ4uV9kVKe7Epy9jIabFjJ5SWpmaDps21zGVGMCQQCB HvK0IW3zpOgfjh5UUCBJYHnLeMGwm7X11rvQH1zW05Vx9W565ROIfjkR1qCD rZJeHgqMWDlIUuR9BdBAkAI8JWgWLdWceXX9Puu4KNmGukx4GZw2n53vMKp0Fu puQxMonRWTNkA76cq8QIj8xuEBkdxy1NFRMEkGu675m ENDRSAPRIVATEKEY 2。PKCS1私钥转换为PKCS8 执行:opensslpkcs8topk8informPEMinprivate。pemoutformpemnocryptoutpkcs8。pem BEGINPRIVATEKEY MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOUubn4qizJtpxn yHOOfVXbBPsC7aWblIS3Pqv7DBJrkp9gfyrUA78L3YjASmmU1uupiY5dC7oT uaDSVA4K8Tmx22YC8PZ7HfAJ5yVaaB2HmpSjg4xyahLPcgCnv8WcxqDUh6VJ92 uic8EPFrOno1SZBkhOxgroKwSX97AgMBAAECgYEAmQx28X6L0rNzpiowLSt9Andm z68U62xuZBUAydDwlYEInU7x39zrTBFCDJuUULI7tVc6aggmpf8mvZoRHxsW0b5j HLqOwy7fKfAzBuFxWYJYKZmha4Tmll0QmTqU505rLtOQTjlf9Zzsr2Jmza64HuzK Ui8r8dXHGK3oUZ49rhECQQD175WgBvEGvwfLFFxK1b4pzeWYTjNgEYBvYhjHjxQ Q3ficmsjxO6yqzLsJneu9IyLUKlWWPZ5AoVTwXNUXKPAkEA7o9T2ruKXw215x29 gGQMSuUJrBJ4J2T2zv2F6VPQyuD1xZpVYU6fRTGBPnkw9dYZ0xFdRQ4I2cyKVrD nt0qVQJAOmMZ67caKYHZ0M3Rp3adQgF26zdJ5agHlF0vpPqWKLKLkN8ni5X2RU p7sSnL2MhpsWMnlJamZoOmzbXMZUYwJBAIEe8rQhbfOk6B6OHlRQIElgect4wb CbtfXWu9AfXNbTlXH39bnrlE4j9ORHWoIOtkl4eCoxYOUhS5H34F0ECQAjz4laB Yt1Zx5df067go2Ya6THgZnDafne8wqnQW6m5DEyidFZM36QDvpyrxAiPzG4QGR3 HLU0VEwSQa7rvmY ENDPRIVATEKEY 3。PKCS8格式私钥再转换为PKCS1格式 执行:opensslrsainpkcs8。pemoutpkcs1。pem BEGINRSAPRIVATEKEY MIICXQIBAAKBgQDlLm5Kosybacfp8hzjn1fl2wT7Au2lm5SEtz6rwwSfq5KfY H8q1AOC92IwEpplNbrqYmOXQu6P07mg0lQOCvE5sdtmAvD2ex3wCef8lWmgdh5q Uo4OMcmoSz3IAp7FnMag1IelSfdronPBDxazp6NUmQZITsYK6CsElewIDAQAB AoGBAJkMdvFi9Kzc6YqMC0rfQJ3ZsvFOtsbmQVAMnQ8JWBCJ1O8dc60wRQgyb lFCyO7VXOmoIJqXJr2aER8bFtGYxy6jsMu3ynwMwbhcVmCWCmZoWuE5pZdEJk6 lOdOay7TkE45XWc7K9iZs2uuB7sylIvKHVxxit6FGePa4RAkEA9eVoAbxBv78 HyxRcStWKc3lmE4zYBGAb2IYx48UEN34nP5rI8Tusqsy7CZ3rvSMi1CpVlj2eQK FU8FzVFyjwJBAO6PU9q7il8NtecdvYBkDErlCawSeCdk9s79helT0Mrg9cWaVWFO n0UxgT55MPXWGdMRXUUOCNnMilawp7dKlUCQDpjGeu3GivmB2dDN0ad2nUIBftu s3SeWoB5RdL6T6liiyi5DfJ4uV9kVKe7Epy9jIabFjJ5SWpmaDps21zGVGMCQQCB HvK0IW3zpOgfjh5UUCBJYHnLeMGwm7X11rvQH1zW05Vx9W565ROIfjkR1qCD rZJeHgqMWDlIUuR9BdBAkAI8JWgWLdWceXX9Puu4KNmGukx4GZw2n53vMKp0Fu puQxMonRWTNkA76cq8QIj8xuEBkdxy1NFRMEkGu675m ENDRSAPRIVATEKEY 可以看出结果和1是一致的;4。从pkcs1私钥中生成pkcs8公钥 执行:opensslrsainprivate。pempuboutoutpublic。pem BEGINPUBLICKEY MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlLm5Kosybacfp8hzjn1fl2wT 7Au2lm5SEtz6rwwSfq5KfYH8q1AOC92IwEpplNbrqYmOXQu6P07mg0lQOCvE5 sdtmAvD2ex3wCef8lWmgdh5qUo4OMcmoSz3IAp7FnMag1IelSfdronPBDxazp6 NUmQZITsYK6CsElewIDAQAB ENDPUBLICKEY 5。从pkcs8私钥中生成pkcs8公钥 执行:opensslrsainpkcs8。pempuboutoutpublicpkcs8。pem BEGINPUBLICKEY MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlLm5Kosybacfp8hzjn1fl2wT 7Au2lm5SEtz6rwwSfq5KfYH8q1AOC92IwEpplNbrqYmOXQu6P07mg0lQOCvE5 sdtmAvD2ex3wCef8lWmgdh5qUo4OMcmoSz3IAp7FnMag1IelSfdronPBDxazp6 NUmQZITsYK6CsElewIDAQAB ENDPUBLICKEY 可以看出结果和4是一样的;6。pkcs8公钥转pkcs1公钥 执行:opensslrsapubininpublic。pemRSAPublicKeyout BEGINRSAPUBLICKEY MIGJAoGBAOUubn4qizJtpxnyHOOfVXbBPsC7aWblIS3Pqv7DBJrkp9gfyrUA 78L3YjASmmU1uupiY5dC7oTuaDSVA4K8Tmx22YC8PZ7HfAJ5yVaaB2HmpSjg4x yahLPcgCnv8WcxqDUh6VJ92uic8EPFrOno1SZBkhOxgroKwSX97AgMBAAE ENDRSAPUBLICKEY opensslrsapubininpublicpkcs8。pemRSAPublicKeyout BEGINRSAPUBLICKEY MIGJAoGBAOUubn4qizJtpxnyHOOfVXbBPsC7aWblIS3Pqv7DBJrkp9gfyrUA 78L3YjASmmU1uupiY5dC7oTuaDSVA4K8Tmx22YC8PZ7HfAJ5yVaaB2HmpSjg4x yahLPcgCnv8WcxqDUh6VJ92uic8EPFrOno1SZBkhOxgroKwSX97AgMBAAE ENDRSAPUBLICKEY 可以看出转换的结果是一致的;7。pkcs1公钥转换为pkcs8公钥 执行:opensslrsaRSAPublicKeyininpubpkcs1。pempubout BEGINPUBLICKEY MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlLm5Kosybacfp8hzjn1fl2wT 7Au2lm5SEtz6rwwSfq5KfYH8q1AOC92IwEpplNbrqYmOXQu6P07mg0lQOCvE5 sdtmAvD2ex3wCef8lWmgdh5qUo4OMcmoSz3IAp7FnMag1IelSfdronPBDxazp6 NUmQZITsYK6CsElewIDAQAB ENDPUBLICKEY 可以看到和上面4,5的结果是一致的; 最后一点: iOS上用的是pkcs8格式的公钥 openssl用的是pkcs1格式的公钥 知道私钥以后是可以导出公钥的,所以私钥一定要保证安全 知道公钥不可以导出私钥 问题:openssl部署内部或外部命令 解决方案针对是window电脑。解决方案一: 配置:SystemRootSystem32环境变量。 1、邮件我的电脑选择下【属性】。 2、选择高级系统设置 3、选择【高级】【环境变量】 4、双击打开path,进行编辑 5、接着我们在这名字后面加【;System32】就可以了。 解决方案二: 安装Win64OpenSSL,地址:http:slproweb。comproductsWin32OpenSSL。html 下载后根据提示一步一步安装,安装完成后: 双击start。bat启动 青锋开源架构