使用场景

文件或数据在本地使用公钥或私钥加密,加密后的数据传送到服务器,服务器使用同一套密钥中的私钥或者公钥进行解密。

import android.util.Base64;import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;public class RSAUtils {//构建Cipher实例时所传入的的字符串,默认为"RSA/NONE/PKCS1Padding"private static String sTransform = "RSA/NONE/PKCS1Padding";//进行Base64转码时的flag设置,默认为Base64.DEFAULTprivate static int sBase64Mode = Base64.DEFAULT;//初始化方法,设置参数public static void init(String transform,int base64Mode){sTransform = transform;sBase64Mode = base64Mode;}//产生密钥对public static KeyPair generateRSAKeyPair(int keyLength){KeyPair keyPair=null;try {KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance("RSA");//设置密钥长度keyPairGenerator.initialize(keyLength);//产生密钥对keyPair=keyPairGenerator.generateKeyPair();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return keyPair;}/*** 加密或解密数据的通用的方法,srcData:待处理的数据;key:公钥或者私钥,mode指* 加密还是解密,值为Cipher.ENCRYPT_MODE或者Cipher.DECRYPT_MODE*/public static byte[]processDAta(byte[]srcData, Key key,int mode){//用来保存处理的结果byte[]resultBytes=null;//构建Cipher对象,需要传入一个字符串,格式必须为"algorithm/mode/padding"或者"algorithm/",意为"算法/加密模式/填充方式"try {Cipher cipher=Cipher.getInstance("RSA/NONE/PKCS1Padding");//初始化Cipher,mode指定是加密还是解密,key为公钥或密钥cipher.init(mode,key);//处理数据resultBytes=cipher.doFinal(srcData);} catch (Exception e) {e.printStackTrace();}return resultBytes;}//使用公钥加密数据,结果用Base64转码public static String encryptDataByPublicKey(byte[]srcData, PublicKey publicKey){byte[]resultBytes=processDAta(srcData,publicKey,Cipher.ENCRYPT_MODE);return Base64.encodeToString(resultBytes,sBase64Mode);}//使用私钥解密,结果用Base64转码public static byte[]decryptDataByPrivate(String encryptedData, PrivateKey privateKey){byte[]bytes=Base64.decode(encryptedData,sBase64Mode);return processDAta(bytes,privateKey,Cipher.DECRYPT_MODE);}//使用私钥解密,返回解码数据public static String decryptToStrByPrivate(String encryptedData,PrivateKey privateKey){return new String(decryptDataByPrivate(encryptedData,privateKey));}}

Android加密篇 RSA相关推荐

  1. Android加密篇 MD5

    使用场景 1.验证密码:只要算法不变,就能和服务器上的MD5匹配: 2.文件完整性的校验:当下载一个文件时,服务器返回的信息包括这个文件的md5,在本地下载完毕时进行md5加密,将两个md5值进行比较 ...

  2. Android加密篇 AES

    AES加密是一种高级加密标准,是一种区块加密标准.它是一个对称密码,就是说加密和解密用相同的密钥.WPA/WPA2经常用的加密方式就是AES加密算法. import java.io.Unsupport ...

  3. Android采用AES+RSA的加密机制对http请求进行加密

    前言 最近维护公司APP应用的登录模块,由于测试人员用Fiddler抓包工具抓取到了公司关于登录时候的明文登录信息.虽然使用的是HTTPS的方式进行http请求的,但还是被Fiddler抓到了明文内容 ...

  4. 【Android取证篇】华为手机助手备份加密的版本

    [Android取证篇]华为手机助手备份加密的版本 ​ 在华为手机助手9.1.0.307及之后的版本,备份时会"强制加密",无法选择不加密备份.-[suy] 华为手机助手v9.1. ...

  5. android java rsa加密_Android RSA与Java RSA加密不一样标准产生问题的解决方法

    最近作一个基于android的客户端,客户端与Java服务器 (MyEclipse自带的Tomcat服务器)的通讯须要实施安全方案.而本人是使用非对称密钥来对数据进行加密的,客户端用公钥加密,服务器用 ...

  6. 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Android高级篇上)...

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. A awesome android expert interview questions a ...

  7. Android应用篇 - app 安全防护

    这篇文章来总结下 Android app 的安全防护手段. 目录: 资源混淆 代码混淆 签名校验 反调试 组件安全 Webview 的代码执行漏洞 加固 编码安全 动态加载 hook 数据存储安全 数 ...

  8. 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Android基础篇)...

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. A awesome android expert interview questions a ...

  9. 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Android高级篇-2)...

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. A awesome android expert interview questions a ...

最新文章

  1. 框架模式与设计模式之区别
  2. R语言data.table导入数据实战:data.table使用字符向量创建新的数据列
  3. c++如何将两个if函数合并_设计一个 add 函数
  4. 解决shutil.copyfile常见错误:PermissionError: [Errno 13] Permission denied
  5. 练习1:创建一个简单的银行程序包
  6. 提高C#编程水平不可不读的50个要诀
  7. linux常用命令之文件操作
  8. Apache Spark 黑名单(Blacklist)机制介绍
  9. 如何更改linux的软件源
  10. 电脑快捷方式变白原因及解决方法——血的教训呜呜呜
  11. 立体栅格地图_具有立体效果的地图制作
  12. 51单片机数字电压表仿真设计_LCD显示
  13. CSS形成圆、平行四边形、菱形、梯形、饼图
  14. [万字长文] 图神经网络的解释性综述
  15. mysql的四表联查_数据库四表联查
  16. 【人工智能实验】运用贝叶斯决策理论实现手写数字识别
  17. pod spec的创建及其使用
  18. 常用的3D深度相机汇总
  19. [转载]点评阿里云、盛大云等国内IaaS产业
  20. icloud日历服务器_如何在Android上查看您的iCloud日历

热门文章

  1. 系统分析师学习笔记(十九)
  2. Bootstrap框架和vue哪个好-天道酬勤
  3. js使用rgb和argb
  4. armbian 斐讯n1_斐讯N1-ArmBian系统写入EMMC及优化
  5. L1-040 最佳情侣身高差 (10 分)java
  6. 10驾校科目一考试系统——窗口交互
  7. WIN10 共享 访问WIN7提示 出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
  8. 第一节计算机课学什么,第一节电脑课作文
  9. idea软件调整字体大小和行间距
  10. “花书” 《深度学习》经验法则--中文