2015-11-10 4 views
1

Я пытаюсь преобразовать свой закрытый ключ в RSA в ключ из строки, но по какой-то причине он выводит системную ошибку.Преобразование строки в ключ для шифрования

static private Key privatekey; 
try{ 
byte[] keyprivBytes = Base64.decode(KeypriString,0); 
PKCS8EncodedKeySpec specpriv = new PKCS8EncodedKeySpec(keyprivBytes); 
KeyFactory keyFactorypriv = KeyFactory.getInstance("RSA"); 
privatekey = keyFactorypriv.generatePrivate(specpriv); <--(here is where the logcat says the code is broken) 
}catch(UnsupportedEncodingException | InvalidKeySpecException | NoSuchAlgorithmException e){ 
e.printStackTrace(); 
} 

, в котором keypriString является String, где мой секретный ключ.

LogCat:

11-12 11:11:20.066 15141-15141/<pakage name> W/System.err: java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag 
11-12 11:11:20.066 15141-15141/<pakage name> W/System.err:  at com.android.org.conscrypt.OpenSSLKey.getPrivateKey(OpenSSLKey.java:180) 
11-12 11:11:20.076 15141-15141/<pakage name> W/System.err:  at com.android.org.conscrypt.OpenSSLRSAKeyFactory.engineGeneratePrivate(OpenSSLRSAKeyFactory.java:64) 
11-12 11:11:20.076 15141-15141/<pakage name> W/System.err:  at java.security.KeyFactory.generatePrivate(KeyFactory.java:187) 
11-12 11:11:20.076 15141-15141/<pakage name> W/System.err:  at <pakage name>.Crypto.<init>(Crypto.java:62) 

Может кто-нибудь сказать мне эту проблему ??

+0

пожалуйста, вы можете опубликовать весь ваш LogCat сообщение – Anjali

+0

это весь LogCat связан с проблемой, остальное лишь некоторые журналами я сделал при использовании шифрования – NobodyNemo

+0

, но у вас нет упоминания о том, за исключением чего вы получаете – Anjali

ответ

1

1: проверить, шаг за шагом, с кодировкой, а затем декодирования, и отслеживать каждый шаг к выходу: вы будете видеть, где он выходит из строя

2: возможные ошибки: Base64.decode дает нуль, потому что это не хорошо base64 string

3: или Вы вводите в заблуждение между PKCS и X509?

Вы должны увидеть Converting Strings to encryption keys and vice versa java , это: Java asymmetric encryption: preferred way to store public/private keys , это: Create PrivateKey and PublicKey from a String base64 encoding with DER format

+0

половина проблемы, я думаю, было путаницей между PCKS8 и X509, все еще пытаясь решить проблему – NobodyNemo