Android客户端与服务器端RSA加密通讯加密字符不一致相关问题
2014-12-10 16:42
831 查看
RSA非对称加密算法 ,适用于数据量较小的情况,比如一般的用法:
1、生成RSA密钥对,公钥发给客户端使用,私钥由服务器使用;
2、客户端用公钥加密所有发出的数据,也用公钥解密所有收到的数据;
3、服务器用私钥加密所有发出的数据,也用私钥解密所有收到的数据;
但Android 客户端 在与 服务器端 通讯时 会遇到这样的问题:服务器无法解密客户端发送的加密数据,客户端可以解密服务器发送的加密数据,但被填充过(解密出来的明文比原始明文长一截)。
原因是 服务器端的 jdk 和 android上的 jdk 对 RSA的缺省算法实现不同。可以有的解决方案 :
一 , 客户端 指定RSA的缺省算法
pher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
部分不做修改
二,服务器端修改 添加 org.bouncycastle.jce.provider.BouncyCastleProvider
1、下一个jar包。http://www.bouncycastle.org/download/bcprov-jdk15on-148.jar
2、修改jre下lib/security目录下的java.security文件,加入下面一行
security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider;
原有的顺序 顺序增加
3、将jar包添加到 jre下lib\ext中
4、代码部分不做修改
android端 还可能遇到 Base64 的问题 比如说 android自带的 Base64无法encodeBase64String 出 服务器端的 decodeBase64的数据,需要Base64 jar 两边统一,但android导入的jar是是不起作用的,android的 sdk中 已存在 一样包名路径的 org.apache.commons.codec.binary.Base64 但未实现,一旦运行就会报错,所以只能下载base64源码 修改路径名 重新打包使用(codec.jar 已经上传到我资源下载)
1、生成RSA密钥对,公钥发给客户端使用,私钥由服务器使用;
2、客户端用公钥加密所有发出的数据,也用公钥解密所有收到的数据;
3、服务器用私钥加密所有发出的数据,也用私钥解密所有收到的数据;
但Android 客户端 在与 服务器端 通讯时 会遇到这样的问题:服务器无法解密客户端发送的加密数据,客户端可以解密服务器发送的加密数据,但被填充过(解密出来的明文比原始明文长一截)。
原因是 服务器端的 jdk 和 android上的 jdk 对 RSA的缺省算法实现不同。可以有的解决方案 :
一 , 客户端 指定RSA的缺省算法
pher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
部分不做修改
二,服务器端修改 添加 org.bouncycastle.jce.provider.BouncyCastleProvider
1、下一个jar包。http://www.bouncycastle.org/download/bcprov-jdk15on-148.jar
2、修改jre下lib/security目录下的java.security文件,加入下面一行
security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider;
原有的顺序 顺序增加
3、将jar包添加到 jre下lib\ext中
4、代码部分不做修改
android端 还可能遇到 Base64 的问题 比如说 android自带的 Base64无法encodeBase64String 出 服务器端的 decodeBase64的数据,需要Base64 jar 两边统一,但android导入的jar是是不起作用的,android的 sdk中 已存在 一样包名路径的 org.apache.commons.codec.binary.Base64 但未实现,一旦运行就会报错,所以只能下载base64源码 修改路径名 重新打包使用(codec.jar 已经上传到我资源下载)
相关文章推荐
- android、ios与服务器端php使用rsa加密解密通讯
- 关于android(客户端)与j2se(服务器端)数据加解密不一致问题
- android、ios与服务器端php使用rsa加密解密通讯
- android 客户端 RSA加密 要注意的问题
- android、ios与服务器端php使用rsa加密解密通讯
- android、ios与服务器端php使用rsa加密解密通讯
- android、ios与服务器端php使用rsa加密解密通讯
- android、ios与服务器端php使用rsa加密解密通讯
- android、ios与服务器端php使用rsa加密解密通讯
- android、ios与服务器端php使用rsa加密解密通讯
- android(客户端)和PC(服务器端)通信RSA 加密解密
- android、ios与服务器端php使用rsa加密解密通讯
- android、ios与服务器端php使用rsa加密解密通讯
- ios RSA加密解密一些相关问题
- 关于android UDP 客户端与delphi UDP服务端通讯中文乱码问题
- Android服务器端接收中文字符出现“?”问题解决办法
- RSA和AES在c#服务端和android客户端之间的加密解密
- 解决Android和PHP通信RSA加密问题
- 解决android中客户端和服务器端的数据传输中文乱码问题
- android平台通过socket向C++服务器端发送数据和接收数据的相关问题