最近公司游戲要上架oppo平臺呜袁,需要按照平臺要求生成公私鑰:
公鑰需要使用 RSA 算法生成阶界,1024 位膘融,生成后使用 Base64 進(jìn)行編碼氧映,編碼后的長度是 216 位脱货。
Base64 使用了 Apache 的 commons-codec 工具包,可以直接下方獲取疗绣,也可以直接去maven倉庫下載
commons-codec-1.10.jar
接著復(fù)制運(yùn)行下方代碼打印就好多矮!
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));
}
}