有一個項目需要php通過openssl 生產rsa蜜月供android和ios使用。目前已經調試兩天了,android那邊使用密鑰的時候一直有問題。
X509EncodedKeySpec expects DER-encoded data, not PEM-encoded
這個是android遇到的其中一個報錯資訊
下面是我的產生密鑰的代碼
// generate 2048-bit RSA key $config = array( 'private_key_bits' => $length, 'private_key_type' => OPENSSL_KEYTYPE_RSA ); $pkGenerate = openssl_pkey_new($config); // get the private key openssl_pkey_export($pkGenerate,$pkGeneratePrivate); // NOTE: second argument is passed by reference // get the public key $pkGenerateDetails = openssl_pkey_get_details($pkGenerate); $pkGeneratePublic = $pkGenerateDetails['key']; // free resources openssl_pkey_free($pkGenerate); // fetch/import public key from PEM formatted string // remember $pkGeneratePrivate now is PEM formatted... // this is an alternative method from the public retrieval in previous $pkImport = openssl_pkey_get_private($pkGeneratePrivate); // import $pkImportDetails = openssl_pkey_get_details($pkImport); // same as getting the public key in previous $pkImportPublic = $pkImportDetails['key']; openssl_pkey_free($pkImport); // clean up return array('public'=>$pkGeneratePublic,'private'=>$pkGeneratePrivate);
之前對rsa加密沒什麼瞭解,今天是第一次使用,又遇到這個跨語言的問題。我自己是可以使用產生的密鑰進行加密和解密的。
請瞭解相關問題的人指點一下。
這裡有篇文章和我問的問題很相似,但是我對rsa,openssl不太熟悉,所以文章裡面說的東西我也看不懂,供能看懂的人蔘考一下。
http://security.stackexchange.com/questions/15948/how-to-supply-openssl-generated-private-public-keys-to-ios-android-apps
回複內容:
有一個項目需要php通過openssl 生產rsa蜜月供android和ios使用。目前已經調試兩天了,android那邊使用密鑰的時候一直有問題。
X509EncodedKeySpec expects DER-encoded data, not PEM-encoded
這個是android遇到的其中一個報錯資訊
下面是我的產生密鑰的代碼
// generate 2048-bit RSA key $config = array( 'private_key_bits' => $length, 'private_key_type' => OPENSSL_KEYTYPE_RSA ); $pkGenerate = openssl_pkey_new($config); // get the private key openssl_pkey_export($pkGenerate,$pkGeneratePrivate); // NOTE: second argument is passed by reference // get the public key $pkGenerateDetails = openssl_pkey_get_details($pkGenerate); $pkGeneratePublic = $pkGenerateDetails['key']; // free resources openssl_pkey_free($pkGenerate); // fetch/import public key from PEM formatted string // remember $pkGeneratePrivate now is PEM formatted... // this is an alternative method from the public retrieval in previous $pkImport = openssl_pkey_get_private($pkGeneratePrivate); // import $pkImportDetails = openssl_pkey_get_details($pkImport); // same as getting the public key in previous $pkImportPublic = $pkImportDetails['key']; openssl_pkey_free($pkImport); // clean up return array('public'=>$pkGeneratePublic,'private'=>$pkGeneratePrivate);
之前對rsa加密沒什麼瞭解,今天是第一次使用,又遇到這個跨語言的問題。我自己是可以使用產生的密鑰進行加密和解密的。
請瞭解相關問題的人指點一下。
這裡有篇文章和我問的問題很相似,但是我對rsa,openssl不太熟悉,所以文章裡面說的東西我也看不懂,供能看懂的人蔘考一下。
http://security.stackexchange.com/questions/15948/how-to-supply-openssl-generated-private-public-keys-to-ios-android-apps