Openssl下载 https://oomake.com/download/openssl
1.配置 Openssl 环境变量
安装完 Openssl 以后将 Openssl bin 目录路径配置到系统 Path 环境变量中去,例如我的安装bin 目录路径为:D:\Win64OpenSSL-1_1_0i\OpenSSL-Win64\bin,就将该路径配置到系统 Path 环境变量中,方便在命令行窗口使用 Openssl 。
2.使用 Openssl 生成 RSA 私钥
打开 AndroidStudio 的 Terminal 窗口(Windows 命令行窗口也可以,只不过生成的私钥或公钥文件保存在Openssl 的 bin 目录下,可以在 -out 后面随便指定输出文件路径例如: D:\pkcs1_rsa_private_key.pem),输入 openssl,进入 Openssl 程序。
输入命令: genrsa -out pkcs1_rsa_private_key.pem 1024 生成 RSA 私钥,如下图:
生成的 RSA 私钥文件名称是:pkcs1_rsa_private_key.pem,文件保存在项目目录下。私钥长度是 1024 字节,格式是 Openssl 默认的 pkcs1 格式。文件打开后是一个 Base64 编码的字符串。
3.使用 RSA 私钥生成 RSA 公钥
输入命令: rsa -in pkcs1_rsa_private_key.pem -pubout -out pkcs1_rsa_public_key.pem
生成的 RSA 公钥文件名称是:pkcs1_rsa_public_key.pem,文件保存在项目目录下。文件打开后是一个 Base64 编码的字符串。
4.对私钥进行 PKCS8 编码
因为 Java 不支持使用 PKCS1 格式的公钥和私钥,所以要对私钥进行 PKCS8 编码才能在 Java 中使用。
输入命令: pkcs8 -topk8 -in pkcs1_rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt
输入该命令不会有任何返回,只会在项目目录中多一个 pkcs8_rsa_private_key.pem 文件,该文件就是 PKCS8 编码后的私钥文件。
5.使用 PKCS8 编码后的私钥重新生成 RSA 公钥
输入命令:rsa -in pkcs8_rsa_private_key.pem -pubout -out pkcs8_rsa_public_key.pem
pkcs8_rsa_private_key.pem 和 pkcs8_rsa_public_key.pem 文件可以直接在 Java 中进行 RSA 加解密。