android oppo平台生成公钥

最近公司游戏要上架oppo平台,需要按照平台要求生成公私钥:


cda0c6b714dd6b1c02817e63051e5a1.png

公钥需要使用 RSA 算法生成,1024 位,生成后使用 Base64 进行编码,编码后的长度是 216 位。

Base64 使用了 Apache 的 commons-codec 工具包,可以直接下方获取,也可以直接去maven仓库下载
commons-codec-1.10.jar

接着复制运行下方代码打印就好!

public class RSAUtils {

    /**
     * \* 加密算法RSA
     */
    public static final String KEY_ALGORITHM = "RSA";

    /**
     * \* 获取公钥的key
     */
    private static final String PUBLIC_KEY = "RSAPublicKey";

    /**
     * \* 获取私钥的key
     */
    private static final String PRIVATE_KEY = "RSAPrivateKey";

    /**
     * \* <p>
     * \* 生成密钥对(公钥和私钥)
     * \* </p>
     * <p>
     * \* @return
     * \* @throws Exception
     */

    public static Map<String, Object> genKeyPair() throws Exception {
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
        keyPairGen.initialize(1024);
        KeyPair keyPair = keyPairGen.generateKeyPair();
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
        Map<String, Object> keyMap = new HashMap<String, Object>(2);
        keyMap.put(PUBLIC_KEY, publicKey);
        keyMap.put(PRIVATE_KEY, privateKey);
        return keyMap;
    }

    public static String getPrivateKey(Map<String, Object> keyMap) throws Exception {
        Key key = (Key) keyMap.get(PRIVATE_KEY);
        return base64Encode(key.getEncoded());
    }

    public static String getPublicKey(Map<String, Object> keyMap) throws Exception {
        Key key = (Key) keyMap.get(PUBLIC_KEY);
        return base64Encode(key.getEncoded());
    }

    /**
     * \* 用base64编码
     * \* @param bytes
     * \* @return
     */
    private static String base64Encode(byte[] bytes) {
        return new String(Base64.encodeBase64(bytes));
    }

    public static void main(String[] args) throws Exception {
        Map<String, Object> pairs = RSAUtils.genKeyPair();
        System.out.println("公钥:" + RSAUtils.getPublicKey(pairs));
        System.out.println("私钥:" + RSAUtils.getPrivateKey(pairs));
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容