最近公司游戏要上架oppo平台,需要按照平台要求生成公私钥:
公钥需要使用 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));
}
}