android rsa assets,Openssl rsa decrypt in java/android

I want to decrypt file encrypted in openssl in java.

File is encrypted with private key using openssl and on java side i want to decrypt it using public key.

The code:

public void testRSA() throws InvalidKeySpecException, NoSuchAlgorithmException, IOException, IllegalBlockSizeException, InvalidKeyException, BadPaddingException, NoSuchPaddingException {

String rawPublicKey = new String(StreamUtils.loadBytes(getContext().getAssets().open("public.key")));

Log.d(TAG, rawPublicKey);

rawPublicKey = rawPublicKey.replace("-----BEGIN PUBLIC KEY-----\n", "");

rawPublicKey = rawPublicKey.replace("-----END PUBLIC KEY-----", "");

byte[] encoded = Base64.decode(rawPublicKey, 0);

PublicKey publicKey = SignUtils.getAsPublicKey(encoded);

byte[] encryptedFile = StreamUtils.loadBytes(getContext().getAssets().open("encrypted_file.bin"));

String encryptedFileString = new String(encryptedFile);

//STACK_NOTE: This file contains 3 parts but only first is used by this code.

// encryptedFileParts[0] is equal to test_file from OpenSSL test

String[] encryptedFileParts = encryptedFileString.split(";");

Log.d(TAG, new String(encryptedFileParts[0].getBytes()));

byte[] encryptedKey = Base64.decode(encryptedFileParts[0].getBytes(), 0);

Log.d(TAG, new String(encryptedKey));

Cipher cipher = Cipher.getInstance("RSA");

cipher.init(Cipher.DECRYPT_MODE, publicKey);

byte[] bytesPassword = cipher.doFinal(encryptedKey);

String passwd = new String(bytesPassword, "UTF8");

Log.d(TAG, "Recieved password = " + passwd);

assertEquals("@rm@gEdon2014", passwd);

}

The error:

junit.framework.ComparisonFailure: expected:

but was:

]>

OpenSSL test:

$ openssl enc -d -base64 -in test_file -out test_file_dec

$ openssl rsautl -verify -inkey public.key -in test_file_dec -pubin

@rm@gEdon2014

Surprise everything is ok!

The files:

public.key

-----BEGIN PUBLIC KEY-----

MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxOIG72RiGb73AOn0LtVm

WvD5IlyVnp6xBhn2Q0LreiQ4htmzPd8oSRhCxlYDIJLz9mfq10cSvV6+iKLeDQh5

EI06XcB8x2wSbqv5+rkCy8r6efcrjNq5SSTdDdzk2Pb6I952mgincwvwgeD7BNxx

SIvVWGnZwb4b8NetrRJ4IQqvj7lD96qJ/veMUduQ0S6VC17G28fNefRSr2O4v0GU

vPLFiliYUEzBmE3S9gIWcSiktACo+ddz8OChouxtANLqBxS6Lz1o8AAfcIweF0vm

ZbDpteYBNGCiuHgPDNB+7Hcf+8xjUfQkE2N35dkVobh6DmgRyFT9q7ZJQERkrnr4

fCzq53Z3kR4gp0taRqUTb2KdxJHLleW5tYAcKCs2OszOcsgz00oapl6ZbiJrxA5b

bQovpiCr7UJ3zCgs293vUXK5aa/ajU4hIiL1YXtdiX8XH5uwePvWMnX7mSww801z

rOko29etXhYgieAVepr/mGh64fZg5xHW2tEKhL+7Bo/yPmxsKMFNGQUdXST0GReA

dLs+LiecnEjuNeKYqRIrbOYC/BPXoJ6cNq/KJ46TyQ+a6zh2qVDPqYQe67Q5HJu2

47gILn1j1C/CbXa/CVapeOjqV/4gVh7LepIJMag9uMTazN1vlt7/ItEvb5n4QrAW

G0kh72xOkoHIeVe4/c3rJzECAwEAAQ==

-----END PUBLIC KEY-----

test_file

UFnXFnQmzefIwB0KkkGwcbAng/l4uM+8ecC5FFz2sPeVeha1vb/Wbbpd0W/BffSz

v2Luq0ItX3vogRzx94MNXo4Tz1CjA0CQhOkYL+y92/sW7jClfnxWH2IEs5mdl/we

SR60AdxD0H2RCeWDWZnOmgQQbRMOj0R0+j1ek5p8Mhj+Ew81g2aql8Nu/EGvqn+h

LYR6ZevlKmn5XW7a17om6RW9w0g04QfCTldxOH0IZOszVSfkadx6yvCpHxTi0WRv

8JJXVhilZxtTTDaVj38PJ7XUC6JoTcGNxVLi1G2okHTMFfsTFKUy+NNVSMEHM01t

dDvkWH9CZXXiZREMeu2kK/0D+GoQrsLmJ9O2L3lv/apN4qabqZ/NXpfA+jNE5Pfi

ckoUi1A2utmnM4H6HeL8Ap+QHcAr7G5NBjahxMF5X0YVmEtGhzMt3Dt+S3jhNfPS

tk5Ic6rqmgvipc6kG5ApTgwgRhn+ferEG+KQIG0hkAtP6yEoJw5unznld75Y/t7y

djdnb71HNPRVoxVc4aI96tAJSrqXHjmYMxpEWKKb1VTWxnn77vjdGdU7sqlipGCU

jc+k2csUICaJzg4CjGykTsRF8cDkUlAcN8ZPgdVJWGWghvrUgDurYMmic2aaqGvQ

zYxl1ErE8y92z0tQKXGYWMAHQvyB7Gpga1km1oDURdM=

The question:

Where did these �� signs came from and how to fix it?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值