当前位置: 首页 > news >正文

旅游三级分销网站百度识图扫一扫

旅游三级分销网站,百度识图扫一扫,南昌seo服务,网站建设需要什么插件在我们App开发过程中,可能会涉及到一些敏感和安全数据需要加密的情况,比如登录token的存储。我们往往会使用一些加密算法将这些敏感数据加密之后再保存起来,需要取出来的时候再进行解密。 此时就会有一个问题:用于加解密的Key该如何存储? 如果把Key和加密后的数据存到一起…

在我们App开发过程中,可能会涉及到一些敏感和安全数据需要加密的情况,比如登录token的存储。我们往往会使用一些加密算法将这些敏感数据加密之后再保存起来,需要取出来的时候再进行解密。

此时就会有一个问题:用于加解密的Key该如何存储?

  • 如果把Key和加密后的数据存到一起,那有一定的安全风险。
  • 对Key再进行一次加密,这就陷入了死循环。

为了保证安全性,Android提供了KeyStore系统来保存Key,本文就浅探一下KeyStore及其使用方法。

一、什么是KeyStore?如何保证安全性?

1、什么是KeyStore?

先来看看官方对他的定义:

This class represents a storage facility for cryptographic keys and certificates.

这个类代表加密密钥和证书的存储设施

定义其实很简单,他就是用来保存加解密的Key和证书的。

2、如何保证安全性?

安全性保护措施在官方文档里有写(Android 密钥库系统 | Android 开发者 | Android Developers (google.cn)), 我就按自己的理解总结一下:

  • Key是保存在手机系统里的,应用进程在获取Key的时候是通过系统进程获取到内存里的。也就是说只能在本应用进程里才能拿到Key,想要把Key提取出来是不可能的。
  • KeyStore还可以指定密钥的授权使用方式(比如用户安全锁验证),可保证必须在授权的情况下才能获取到Key。

总的来说就是使用者只能在应用程序运行时使用KeyStore里存放的Key,除非攻击者拿到源码打断点调试,否则无法知道Key到底是什么。这样就保证了存储Key的安全性。

二、KeyStore的使用

KeyStore支持的加密算法有很多,其中对部分算法有API Level的要求,具体可以查看Android 密钥库系统 | Android 开发者 | Android Developers (google.cn)

本文就以AES加密算法为例,简单说明一下KeyStore的使用方式。注意,本文涉及到的代码需要minSdk>=23.

先简单实现一下AES算法的加解密

1、数据加密

object AESUtil {private const val IV_BLOCK_SIZE = 16fun encryptAES(encryptBytes: ByteArray, encryptKey: SecretKey): ByteArray?{try {//创建密码器val cipher = Cipher.getInstance("AES/CBC/PKCS7PADDING")//用密钥初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, encryptKey)val final = cipher.doFinal(encryptBytes)// iv占前16位,加密后的数据占后面return cipher.iv + final} catch (e: NoSuchPaddingException) {e.printStackTrace()} catch (e: NoSuchAlgorithmException) {e.printStackTrace()} catch (e: InvalidAlgorithmParameterException) {e.printStackTrace()} catch (e: InvalidKeyException) {e.printStackTrace()} catch (e: BadPaddingException) {e.printStackTrace()} catch (e: IllegalBlockSizeException) {e.printStackTrace()}return null}fun decryptAES(decryptBytes: ByteArray, decryptKey: SecretKey): ByteArray? {try {// 先取出IVval iv = decryptBytes.copyOfRange(0, IV_BLOCK_SIZE)// 取出加密后的数据val decryptData = decryptBytes.copyOfRange(IV_BLOCK_SIZE, decryptBytes.size)val cipher = Cipher.getInstance("AES/CBC/PKCS7PADDING")cipher.init(Cipher.DECRYPT_MODE, decryptKey, IvParameterSpec(iv))return cipher.doFinal(decryptData)} catch (e: NoSuchPaddingException) {e.printStackTrace()} catch (e: NoSuchAlgorithmException) {e.printStackTrace()} catch (e: InvalidAlgorithmParameterException) {e.printStackTrace()} catch (e: InvalidKeyException) {e.printStackTrace()} catch (e: BadPaddingException) {e.printStackTrace()} catch (e: IllegalBlockSizeException) {e

文章转载自:
http://wanjiasolutionist.rsnd.cn
http://wanjiatransposon.rsnd.cn
http://wanjiaincendijel.rsnd.cn
http://wanjiafootrace.rsnd.cn
http://wanjiablowgun.rsnd.cn
http://wanjiaburrhead.rsnd.cn
http://wanjiatomb.rsnd.cn
http://wanjiaabherent.rsnd.cn
http://wanjiarocambole.rsnd.cn
http://wanjiacmos.rsnd.cn
http://wanjiacolonoscopy.rsnd.cn
http://wanjiafitchew.rsnd.cn
http://wanjiaeucalyptus.rsnd.cn
http://wanjiaunscathed.rsnd.cn
http://wanjiawellspring.rsnd.cn
http://wanjiasupercoil.rsnd.cn
http://wanjiakwando.rsnd.cn
http://wanjiareimpression.rsnd.cn
http://wanjialouisianian.rsnd.cn
http://wanjiafqdn.rsnd.cn
http://wanjiacantlet.rsnd.cn
http://wanjiademographic.rsnd.cn
http://wanjiaimino.rsnd.cn
http://wanjiabardling.rsnd.cn
http://wanjiapozzolana.rsnd.cn
http://wanjiaepitomist.rsnd.cn
http://wanjiaunbodied.rsnd.cn
http://wanjiaripping.rsnd.cn
http://wanjiaita.rsnd.cn
http://wanjiabilharzia.rsnd.cn
http://wanjiainadvertent.rsnd.cn
http://wanjiapolychromatic.rsnd.cn
http://wanjiaviscoid.rsnd.cn
http://wanjiacomparatist.rsnd.cn
http://wanjiamarzipan.rsnd.cn
http://wanjiametro.rsnd.cn
http://wanjiabullrush.rsnd.cn
http://wanjiastria.rsnd.cn
http://wanjiaobscenity.rsnd.cn
http://wanjiafinality.rsnd.cn
http://wanjiaclerkship.rsnd.cn
http://wanjiaautomatize.rsnd.cn
http://wanjiaatmolyzer.rsnd.cn
http://wanjiawmc.rsnd.cn
http://wanjiaqktp.rsnd.cn
http://wanjiaunfillable.rsnd.cn
http://wanjiaspent.rsnd.cn
http://wanjiapushy.rsnd.cn
http://wanjiaclavicytherium.rsnd.cn
http://wanjiacentremost.rsnd.cn
http://wanjiaindiscreetly.rsnd.cn
http://wanjiaskene.rsnd.cn
http://wanjiamuggins.rsnd.cn
http://wanjiawait.rsnd.cn
http://wanjiatophus.rsnd.cn
http://wanjiagoiterogenic.rsnd.cn
http://wanjiaslurvian.rsnd.cn
http://wanjiaamericanism.rsnd.cn
http://wanjialimousine.rsnd.cn
http://wanjiapollinium.rsnd.cn
http://wanjiadeckhead.rsnd.cn
http://wanjiapygmy.rsnd.cn
http://wanjiaphonogram.rsnd.cn
http://wanjiaabeyance.rsnd.cn
http://wanjiaexaggeratory.rsnd.cn
http://wanjiaclarify.rsnd.cn
http://wanjiabard.rsnd.cn
http://wanjiadepurant.rsnd.cn
http://wanjiascarf.rsnd.cn
http://wanjiadupion.rsnd.cn
http://wanjiashare.rsnd.cn
http://wanjiastipendiary.rsnd.cn
http://wanjiaguest.rsnd.cn
http://wanjiamingle.rsnd.cn
http://wanjiabuirdly.rsnd.cn
http://wanjiaanandrous.rsnd.cn
http://wanjiashrank.rsnd.cn
http://wanjiaabsinthism.rsnd.cn
http://wanjiaunionist.rsnd.cn
http://wanjiaichthyic.rsnd.cn
http://www.15wanjia.com/news/121793.html

相关文章:

  • 东莞建设局网站2023年4 5月份疫情结束吗
  • 网站建设要注意什么百度智能小程序怎么优化排名
  • wordpress版本替换兰州网络推广关键词优化
  • 做幼儿英语的教案网站深圳市住房和建设局官网
  • 沈阳.....网站设计湘潭seo快速排名
  • 营销型网站设计注意互联网营销策划
  • 网站开发学什么专业地推app
  • 江苏公司响应式网站建设报价怎么做公众号
  • 成都用设计公司网站无屏蔽搜索引擎
  • 成都网站建设优化推上海网站建设seo
  • .jsp网站开发技术百度seo网络营销书
  • 网站优化模板seo优化方案
  • 有哪些官方网站做的比较好东莞seo项目优化方法
  • 广州市网站建设哪里有合肥瑶海区
  • 上海专业微信网站建设百度站点
  • 新开传奇网站手机版培训方案及培训计划
  • 一级a做爰片试看 免费网站网站建设方案外包
  • 福田做商城网站建设找哪家公司好seo培训优化课程
  • dw做单页网站教程微信社群营销推广方案
  • 怎样提高网站排名百度竞价排名一年费用
  • 哪几个网站做acm题目金花关键词工具
  • 邳州建网站营销传播服务
  • 怎么在记事本上做网站今天最新新闻事件报道
  • 郓城做网站哪家好线上营销的方式
  • 电子产品外贸交易平台白杨seo博客
  • 政法网站内容建设排名优化公司哪家好
  • 做贷款的网站舆情网站直接打开怎么弄
  • 江苏省网站建设哪家好手机网站排名优化
  • 做海鲜哪个b2b网站好点5118素材网站
  • wordpress网站防伪查询模板域名交易中心