JAVA和IOS对接RSA加密问题

公司开发IOS APP,跟JAVA后台对接。在加密方面,使用的是RSA。在JAVA端生成的公钥和私钥,通过BASE64转成字符串。然后在IOS端,如果直接拿着这个转化的字符串密钥(通过BASE64解密后)去做RSA加密的话,这边JAVA端解密会失败。所以,请问下,在密钥方面应该怎么处理呢?JAVA端生成的密钥怎样处理给到IOS端才会成功?谢谢!

3个回答

Java和android及iOS对接RSA加密经验
IOS 与JAVA RSA加密解密
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

解密失败,你得查下一下原因。思路没问题。JDK不同版本对Base64的处理不一样,需要注意;Http传输中对特殊字符需要转译,也要注意。建议你前后台联调一下,两端分别对同一个明文加密解密,看看得到的结果是否一致。

new03
new03 嗯嗯 多谢
3 年多之前 回复

我只跟你说一句,ios用的证书格式跟你们java不一样,ios要用DER,其他的我已经不想说了。图片说明图片说明图片说明

哦,对了,ios只支持那个好像叫x501的openssl标准。你是用openssl的哪种标准生成的证书,这非常重要。不同的标准,肯定是不能通的。希望对你有帮助。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java进阶之对接安卓RSA加密工具类
     1.什么是RSA加密算法       RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其...
iOS 与 .net RSA加密 问题
.net 能用的 XML格式的 公钥密钥 格式为rnvpUk3hmR9kDdo8+AoLfFqpP/JlPkU6VDlMaDqF5WoNUQcdUsfUT4cQSZaa5O/aeDP2llvPL0paQmlXn1bV2A0dJKTnvlWNQC/QGFlcVIfSWeDaZnZDn/Z1XEqwBKMnZtCIQZQPws7kqlouV9CmjcA2i8Fm9S0fDl7F6CfJfJlsM=AQABrnrn怎样才能转换成iOS客户端能用的公钥密钥 rnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+lSTeGZH2QN2jz4Cgt8Wqk/8mU+RTpUOUxoOoXlag1RBx1Sx9RPhxBJlprk79p4M/aWW88vSlpCaVefVtXYDR0kpOe+VY1AL9AYWVxUh9JZ4NpmdkOf9nVcSrAEoydm0IhBlA/CzuSqWi5X0KaNwDaLwWb1LR8OXsXoJ8l8mWwwIDAQABrn
ios openssl rsa 加密问题
本人使用java做后台,后台使用同一公钥文件(格式为ANS.1 DER编码方式 长度为2048模长 ),加密111111(NO_PADDING)字符串得到结果 A55F50..... 开头的16进制编码,但是在ios平台使用openssl和同一公钥文件加密111111始终得不到A55F50开头的结果,代码如下,请大神帮忙看看....rn[code=c]rn #define MODULUS "CF4D10C2C011FCF1EE8F660C9B8AD7E7C8BAAB285C8168F2B355145CCFEAE4E555AC1C4926B00FFF23EC49800B159040F05BA1CC25F4D997311048292904B4015E5A419C0CFE21CC08B144575CC65BD05D5B36EECC190592BD66DACA68B49A3B0D2B1ACE4D26F50339DB834004FAABF399BD66296CA85C8F3E840E1864036A2CDDBDC5188CCF6C23928AA699C3564DB1F83561501A2C8033A34516161DF27B9C8357041291B39203C53E87027F2024A07F3DEBD41FB286CEB4824659347BF2863A6688497E56BFE4B417992F026719D2A199EC6481983636D10FBF74B8011EE5A8D27EAFE7A8E7B33FFED35167783B5753C74C2EBA7C36D134F1090EACEBC225"rn rn #define PUBLIC_EXPONENT 65537rn rn int ret, flen;rn BIGNUM *bnn, *bne,*bnd;rn rn bnn = BN_new();rn bne = BN_new();rn //bnd = BN_new();rn rn rn BN_hex2bn(&bnn, MODULUS);rn BN_set_word(bne, PUBLIC_EXPONENT);rn //BN_hex2bn(&bnd, MODULUS);rn rn RSA *r = RSA_new();rn //RSA* r = RSA_generate_key( 2048 ,RSA_F4,0,0);rn rn rn r->e = bne;rn r->n = bnn;rn //r->d = bnd;rn rn RSA_print_fp(stdout, r, 5);rn rn flen = RSA_size(r);// - 11;rn rn /*out = (char *)malloc(flen);rn bzero(out, flen);*/rn //memset(out, 0, flen);rn rn char *sp = (char *)malloc(flen);rn bzero(sp, flen);rn //memset(sp, 0, flen);rn rn char *message = "111111";rn rn BIGNUM *rs;rn rn rs = BN_new();rn rn ret = RSA_public_encrypt(flen, (unsigned char *)message , (unsigned char *)sp, r, RSA_NO_PADDING);rn rn if (ret > 0)rn rn //BN_bin2bn((unsigned char *)sp, flen, rs);rn //NSLog(@"Encrypt OK, sp=%s",BN_bn2hex(rs));//转为16进制rn unsigned char *tmpData;rn rn tmpData=(unsigned char *)sp;rn rn for (int i=0; i
[iOS 登陆加密] RSA加密
java与IOS之间的RSA加解密 http://yuur369.iteye.com/blog/1769395Java中使用OpenSSL生成的RSA公私钥进行数据加解密 http://blog.csdn.net/chaijunkun/article/details/7275632一篇搞定RSA加密与SHA签名|与Java完全同步 http://www.jianshu.com/p/a1bad1
ios RSA 加密 解密
1.参考链接https://www.jianshu.com/p/43f7fc8d8e14
iOS下的RSA加密方法
最近几天折腾了一下如何在iOS上使用RSA来加密。iOS上并没有直接的RSA加密API。但是iOS提供了x509的API,而x509是支持RSA 加密的。因此,我们可以通过制作自签名的x509证书(由于对安全性要求不高,我们并不需要使用CA认证的证书),再调用x509的相关API来进行加 密。接下来记录一下整个流程。 第一步,制作自签名的证书 1.最简单快捷的方法,打开Terminal,使用ope
iOS RSA 加密和Base64
iOS中比较常见的RSA加密的代码和Base64的代码
iOS的rsa加密
ios平台的RSA加密算法实现,非证书的。从服务器获取nsstring类型的公钥,采用base64解码后进行加密。
iOS RSA 加密包
具体写法:http://www.jianshu.com/p/3347162bde21  简书
iOS RSA加密
iOS的简单加密解密方法,生成公钥私钥网址:http://web.chacuo.net/netrsakeypair
iOS RSA加密和解密
一、使用openssl终端指令生成公钥和私钥证书,最后需要得到公钥证书(public_key.der)和私钥证书(private_key.p12) 1,打开终端前,在桌面新建文件夹CertificateFile(用来存放证书) 2,打开终端cd到Certificate File文件目录(在cd后空格直接拖文件到终端)回车 3,依次输入下面的指令: openssl genrsa -o
java RSA加密 RSA签名
java RSA加密加密 ,生成签名,验证签名
java与php,RSA加密解密对接
验签和加密解密方法不一样,下面代码只进行加密解密。 Java与php进行加密填充的格式不一样,Java为 RSA/NONE/NoPadding,PHP为 RSA/ECB/PKCS1Padding。 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.misc.BASE64Decoder; import j...
rsa签名Net 与JAVA对接
与蘑菇对接时用到,Java rsa 公私钥对转,及细节处理 与蘑菇对接时用到,Java rsa 公私钥对转,及细节处理
支付对接常用:关于asp rsa加密
        asp 算是老编程语言了吧,不支持RSA加密,ASP RSA类库基本上也很少见,好些支付平台也不提供asp支付demo,一方面是没有开源的ASP RSA加密类库,一方面是这种语言太古老了有些新特性不支持。        但是有时候网站就是ASP语言开发的,不得不接入,常用的对接方式,就用asp.net或者php语言作为跳板,好些支付平台也是这样子实现的,提供asp支付demo,让的...
.net 和 java RSA加密问题
首先我是个c#小白,被拉去写c#demo,到现在类都没创建出来,用的一个别人的项目改的rn那么问题来了,我先贴java解密的代码rn解密时出现javax.crypto.BadPaddingException: Decryption errorrn[code=java]rn//byte[] aesKeyByte ,getdata是string类型数据rnBeanUtils.json2Bean(AesRsaUtil.decryptData((String)e.getData(), aesKeyByte, "UTF-8")rnrn public static String decryptData(String resEncryptData, byte[] aesKeyBytes, String charset) throws UnsupportedEncodingException rn byte[] decodeBase64DataBytes = Base64.decodeBase64(resEncryptData.getBytes(charset));rn byte[] aesDecryptData = AESDecrypt(decodeBase64DataBytes, aesKeyBytes, "AES", "AES/ECB/PKCS5Padding", (String)null);rn return new String(aesDecryptData, charset);rn rnrnpublic static byte[] AESDecrypt(byte[] encryptedBytes, byte[] keyBytes, String keyAlgorithm, String cipherAlgorithm, String IV) rn try rn if(keyBytes.length % 8 == 0 && keyBytes.length >= 16 && keyBytes.length <= 32) rn Cipher ee = Cipher.getInstance(cipherAlgorithm);rn SecretKeySpec secretKey = new SecretKeySpec(keyBytes, keyAlgorithm);rn if(IV != null && StringUtils.trimToNull(IV) != null) rn IvParameterSpec decryptedBytes = new IvParameterSpec(IV.getBytes());rn ee.init(2, secretKey, decryptedBytes);rn else rn ee.init(2, secretKey);rn rnrn byte[] decryptedBytes1 = ee.doFinal(encryptedBytes);rn return decryptedBytes1;rn else rn return null;rn rn catch (Exception var8) rn var8.printStackTrace();rn return null;rn rn rn[/code]rnrn下面是.net加密的代码rn[code=csharp] // ZITOPAY_RSA_PUBLICKEY公钥加密 ,后面rn string aesKey = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 16);//16位随机数rnrn byte[] byteArray = Encoding.UTF8.GetBytes(aesKey);rn string signature = RSAEncrypt(ZITOPAY_RSA_PUBLICKEY, byteArray);rnrnrn public static string RSAEncrypt(string xmlPublicKey, byte[] EncryptString)rn rn tryrn rn string publickey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxISByn8ytHt2XWZczV0qCV8yM+RSJwxh7YNfkzOh9LkED4xfWTFHl76kwopZqliQwO4c+8Y0B3yYNDSDxgiw0eBPCZ45yyeZ5WFl3a5JTi31OQU9FWv28DQxjXNyWw8xBoo8PHcdthosuzjLbYZvYgus/g0dSbDIp+EEXTOkUn99PKa7AGKuJpVxQmHDZPsWlO8V3cfGfyRu6+Iff6QLIhCVXc3PbK9WnvhCwVocoMIYQYefBjftCppskn80bGr1X4cBwFlgrDSepS7E9/GTUfSh1dScSk6q91oRdTiP5n4n6lk7lWn8bD5C/NDa5yOvskGU/qbx5XIF+kHyiKQ6NwIDAQABAQAB";rn byte[] CypherTextBArray;rn string Result;rn System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(2048);rn rsa.FromXmlString(publickey);rn CypherTextBArray = rsa.Encrypt(EncryptString, false);rn Result = Convert.ToBase64String(CypherTextBArray);rn return Result;rn rn catch (Exception ex)rn rn throw ex;rn rn rnrn[/code]rn[code=java]java的公钥,c#的是我自己拼出来的不知道对不对rn public static final String ZITOPAY_RSA_PUBLICKEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxISByn8ytHt2XWZczV0qCV8yM+RSJwxh7YNfkzOh9LkED4xfWTFHl76kwopZqliQwO4c+8Y0B3yYNDSDxgiw0eBPCZ45yyeZ5WFl3a5JTi31OQU9FWv28DQxjXNyWw8xBoo8PHcdthosuzjLbYZvYgus/g0dSbDIp+EEXTOkUn99PKa7AGKuJpVxQmHDZPsWlO8V3cfGfyRu6+Iff6QLIhCVXc3PbK9WnvhCwVocoMIYQYefBjftCppskn80bGr1X4cBwFlgrDSepS7E9/GTUfSh1dScSk6q91oRdTiP5n4n6lk7lWn8bD5C/NDa5yOvskGU/qbx5XIF+kHyiKQ6NwIDAQAB";rnrnjava的私钥rn String priv = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDEhIHKfzK0e3ZdZlzNXSoJXzIz5FInDGHtg1+TM6H0uQQPjF9ZMUeXvqTCilmqWJDA7hz7xjQHfJg0NIPGCLDR4E8JnjnLJ5nlYWXdrklOLfU5BT0Va/bwNDGNc3JbDzEGijw8dx22Giy7OMtthm9iC6z+DR1JsMin4QRdM6RSf308prsAYq4mlXFCYcNk+xaU7xXdx8Z/JG7r4h9/pAsiEJVdzc9sr1ae+ELBWhygwhhBh58GN+0KmmySfzRsavVfhwHAWWCsNJ6lLsT38ZNR9KHV1JxKTqr3WhF1OI/mfifqWTuVafxsPkL80NrnI6+yQZT+pvHlcgX6QfKIpDo3AgMBAAECggEAcpl7PuVSYmGlMu5gq/nqa7CyDATXy6Gy8dkswSDZD2ddcNvBNrhAMcOhPTmE9IvVTk0NZd29taf48mi1d6TVyG5waQF2XnxniJZ12wKqCQdP+8KMTpO5W3Z0dzKdu3BufIvceL5V+z3kXAHQz7wX9Csu5LAtJi4LtarI6rkU2G4ugbRoi/NSA9V3gGYrBV5nvoJfuTyEi1cULywSbmGCvGGZ34JeJhWqgCJmuCrsB1xQrHAkqATjdQlVarkbAJQGMjEAsIgmldof4Hex+l+2egO3pU1pOM0dwhE1Ecz+5hLgD7MwXfCa8vxXSHLcKalhFakcNsstLCagV4ltKfeD0QKBgQDpYuIvzq+xpSR/vTSM+34WOMLSUACJ7f77GT0hZIIP2AJUP3uqFP9+vgT/i2Qiq1b6sydkqbxR98us7+Lbt1elOqq5AqGS0VYZTXPXS65oqb/HKSflHDanE+C4jDMQ/RjIJHZXjPkejXcKSvyEsaIlOnEPNeoQup20rTiizhwbNQKBgQDXjxnhPVQYysCJ19LojYQl2gWcyu7khiL6Kh/DiDJbwrSMKPhBZHf87BqQKIok3eeZOwrKAD+r/oGRAB3535A03dlpTGpWD3y50Glkb3Fd2SFgos66AV94Wki1jlMSdQvJ4qruh01mOdPre8JGE2MqT+CWE0gnOUyeKE3HJuvBOwKBgBxJPs66hzLJqCXPQbpAlOSOlpY02gvdi4TVZ0JP0y+mZ4ncc9mGV/z9fM+YDlfhWlZiNkkOBWQN22KnZGBq1TWSabSoq/qGYqAIchzK8GWBBVxXEZ3EEJ+pWhgj7eCGPGWtfaZY0KyySpY1xmsyuEs4zREh4K+MXqbSQ8X/owptAoGAH4vCttLZ1tL9QG8EX6IuP7fbcGnGck0rGz9E7MGm1QT2lTh9tFw2rx4CeSxloyWSejtIxe0pZEtXvNeui13rZcE9ywoy2atkjnDwq5EfnyNinhjVdiUzSpKz51YP1Diq4/23FDda3WYDHIg9EzJNJekQrgXeXlclXlP5pfaNM/cCgYB3vd8Z+Di+iNd1qhxvcVwsAQ+hIZ7/VvbE+rZUeH3IbKfChX3mSiwqm88CVsKqtUzVAHwR6jE887mpYMpavoZQ2bhtLV8jANYT+UMYrWoRY63lHUeV704FcDH4zV3bU5Ul4iwiCOgZN0bZlG94wwDDW2E+qoba1tKrB/0M01/aUg==";rn[/code]rn各位大神c#怎么写啊,小弟我真心不知道啊,哪儿有问题 c#公钥加密,java私钥解密
iOS逆向 -- RSA加密探究
密码学说起: 历史:两千年前 凯撒大帝发明 base64的雏形 容易破解 【信息论】 间谍很危险 一直到1976年 迪菲、赫尔曼提出了一个构想 不通过密钥交换 1977 rsa诞生 RSA加密探究 对称加密的弊端 还有RSA的历史不在这里赘述,有兴趣的同学课自行查阅资料 在开始之前需要一定的数学知识,在这里跟大家一起复习一下: 取模运算: 3%17= 3 、 3^2%...
iOS RSA加密基础操作及使用。
最近项目中需要将密码数据以文件的形式存在本地,但又不能直接使用明文,所以就选择使用 RSA 加密。记录分享一下,并封装了一个简单使用的加密与解密的工具~ Mac 上生成公钥、私钥,及使用 RSA本地加密需要使用 公钥加密,私钥解密。当然也可以给服务端解密使用。 1、在桌面新建一个文件夹 RSA_Pem ,然后打开终端,cd 切换到改文件夹中,依次输入以下 2、输入指令:op
ios RSA加密 苹果官方demo
ios RSA加密 苹果官方RSA加密demo,希望对各位有帮助
RSA加密问题(jsencrypt加密 java解密)
我这篇博文就是记录我这2天来踩过的坑,为相关相同需求的朋友提供点帮助。 参考文章 http://blog.csdn.net/libraryhu/article/details/50821791 https://github.com/dqmmpb/rsa-demo https://github.com/travist/jsencrypt    ->     issue 首先
c#实现RSA私钥加密对接java接口
该代码是用c#开发对接一个java的物流对接的demo,用到了RSA私钥加密,完整的demo可以直接运行的
关于iOS端RSA加密的问题
这两天在给之前的项目做相关的RSA加密,利用模和指数。现在遇到一个问题:rn加密好的内容,我传递给了后台,但解密后:rn\u0002.叓_?爯藚辉.\u0017曭\u0017榽.6\u000B惪匇.-\u0003j鰏\u007Fn褁\u0004Lw.XW4.\u0015e|艸.\b\u0000111111rnrn只有最后的111111是正确的,前面被添加了很多乱码。rn我使用的是rnhttps://github.com/sujie0308/SJRSAEncryption来进行模和指数的RSA加密的rnrn还望有相关人员能给予一些帮助
java RSA加密 解密
java RSA加密解密
RSA加密java
java RSA 加密
RSA加密,JAVA
java实现的RSA加密,借助BigInteger类实现
java rsa加密算法实现
用java实现的rsa加密算法,里面有详细的加密过程的实现
java实现RSA加密
1、甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。 2、甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。 3、乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。
RSA加密_java实现
RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman.这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥匙,公钥与私钥。同时支持数字签名。数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输工程中不被修改。
RSA加密-java
深入理解RSA加密技术,并且可以针对java技术做具体说明
java RSA 加密(配置文件)
一、通过对RSA资料的整理获得如下: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputS
JAVA实现RSA加密
JAVA 实现RSA的加解密算法,通过BASE64编码,密钥长度1024
java RSA 加密 解密
java RSA加密解密 该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行。RSA加密对明文的长度是有限制的,如果加密数据过大会抛出如下异常: Exception in thread &quot;main&quot; javax.crypto.Ille...
RSA加密工具类(Java)
干货 package com.hht.exchange.utils; import javax.crypto.Cipher; import java.security.*; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.Ba...
Java实现RSA加密
一、什么是RSA? RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。所以这个算法取自他们三位的姓名首字母。 RSA是目前最具有影响力的公钥加密算法,它的原理基于一个简单的数论事实:将两个大质数相乘十分简单,但是想要对它们的乘积进行分解却异常困难。这里的乘积一般公开作为密钥。只要密钥的...
java RSA加密
公司最近在用RSA加密,所以写了个demo 给大家分享一下, 麻烦大家好评哦! -------赠人玫瑰,手有余香。
RSA加密 Java实现
RSA加密 Java实现,RSA加密 Java实现,RSA加密 Java实现
RSA加密程式 JAVA
使用RSA加解密 可加解密文字檔案 產生P & Q 密文 明文
RSA加密JAVA实现
RSA加密JIAWOBANIYAOREN
RSA Android 实现
Android 开发时使用RSA加密时使用的类,方便使用时拷贝package com.cnepay.mobile.bts.utils;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.m
java RSA 加密
Java RSA,1024位密钥,加密明文最大长度是是117字节,不管多长加密的密文好像都是128字节。rn是这样的吗?
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview