小编mrp*_*ink的帖子

PKCS1-padding/RSA加密ios objc和java之间的区别

我正在为ios和Android开发应用程序.我对加密任务比较陌生,在过去的3天里,我不停地撞墙,因为我无法运行RSA加密.

两个客户端都从Java服务器接收公钥.在android我有(显然,因为它几乎与服务器端的代码相同)没有麻烦,但ios部分似乎根本不兼容.我想用公钥加密一小段数据(aes密钥),这就是我在Java中的做法:

try {
    String publickey  = "MCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAK+dBpbOKw+1VKMWoFxjU6UCAwEAAQ==";
    byte[] bArr = Crypto.base64Decode(publicKey, false);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA", "BC");
    EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKey);
    PublicKey publicKey = keyFactory.generatePublic(publicKeySpec);

    Cipher cipher = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
    cipher.init(1,publicKey);
    int cipherBlockSize = cipher.getBlockSize();
    ByteArrayOutputStream bArrOut = new ByteArrayOutputStream();
    bArrOut.flush();
    int pos = 0;
    Log.i("ContentBufferLength", contentBuffer.length+"");

    while (true) {
        if (cipherBlockSize > contentBuffer.length - pos) {
            cipherBlockSize = contentBuffer.length - pos;
        }
        Log.i("CipherBlockSize", cipherBlockSize+"");
        byte[] tmp = cipher.doFinal(contentBuffer, pos, cipherBlockSize);
        bArrOut.write(tmp);
        pos += cipherBlockSize;
        if (contentBuffer.length <= …
Run Code Online (Sandbox Code Playgroud)

java encryption android rsa ios

29
推荐指数
1
解决办法
4730
查看次数

标签 统计

android ×1

encryption ×1

ios ×1

java ×1

rsa ×1