我有一個C應用程序,該應用程序內我生成RSA密鑰對,用下面的代碼(錯誤檢查左由於可讀性):如何生成Android中生成的RSA密鑰類似於OpenSSL的PEM_write_PUBKEY鍵
void generateKeyPair(char* pass) {
EVP_PKEY *pkey = NULL;
RSA* r;
OpenSSL_add_all_algorithms();
RAND_load_file("/dev/urandom", 1024);
r = RSA_generate_key(KEY_LENGTH, RSA_F4, NULL, NULL);
pkey = EVP_PKEY_new();
EVP_PKEY_assign_RSA(pkey, r);
FILE* fp = fopen("private.key", "w");
PEM_write_PrivateKey(fp, pkey, EVP_aes_256_cbc(), NULL, 0, NULL, pass);
fclose(fp);
fp = fopen("public.key", "w");
PEM_write_PUBKEY(fp, pkey);
fclose(fp);
}
我通過設備之間的服務器同步公共PEM密鑰。現在我必須編寫兼容的Android應用程序,但必須以相同的格式生成公鑰,然後使用PEM_write_PUBKEY。
我知道我應該在DER格式中完成同步,但現在我無法再更改設計了。沒有辦法以類似的格式生成密鑰。
我想這是一個#PCKS1 base64編碼密鑰,但我不確定,我不知道如何在Android中生成類似的 - Androids標準是#PCKS8。但是,如果有解決方法,我寧願不要在我的項目中包含海綿城堡。
PKCS#8用於私鑰。 –