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

校园网网站分页党群建设重庆百度关键词推广

校园网网站分页党群建设,重庆百度关键词推广,北京网站建设公司收购,哪里网站海报做的比较好基础算法说明 https://www.youtube.com/watch?vlnKPoWZnNNM 虽然这个视频讲的非常详细,但是涉及到具体底层算法,大致流程 1. 将数据转成HEX或者byte array 2.将数据分层一块块等大小的数据 3.将数据和key 进行一次混合,加密之后的输出&…

基础算法说明

https://www.youtube.com/watch?v=lnKPoWZnNNM

虽然这个视频讲的非常详细,但是涉及到具体底层算法,大致流程

1. 将数据转成HEX或者byte array

2.将数据分层一块块等大小的数据

3.将数据和key 进行一次混合,加密之后的输出,在生成新的key

4.将新的key和下一个数据,进行加密计算,继续重复

生成的KEY长度有128,192,256,不同的的长度对算法的速度有影响

当然key的长度越长,可能越安全这样

具体的算法是什么呢

为什么要有IV

另外这篇

https://www.youtube.com/watch?v=uWEPEBmFBHw

我们在AES的时候,有key了,为什么要IV呢

大概解释是,IV是个Ramdom的参数,不然每次用key算出来的值是一样的,

所以加上IV后,计算出来的结果会不一样。

Android上的具体AES实现

然后就是PL这个在Android上AES加密的具体实现

https://github.com/philipplackner/AndroidCrypto/tree/encrypt/decrypt

或者参考这个文档

https://medium.com/@jerry.cho.dev/android-keystore-aa7d2b43adfe

基本差不多

1.加密管理器

key的初始化和获取

@RequiresApi(Build.VERSION_CODES.M)
class CryptoManager {//获取keystroe,用于存放加密的keyprivate val keyStore = KeyStore.getInstance("AndroidKeyStore").apply {load(null)}//获取加密器,模式是ENCRYPT_MODEprivate val encryptCipher get() = Cipher.getInstance(TRANSFORMATION).apply {init(Cipher.ENCRYPT_MODE, getKey())}//解码器,模式DECRYPT_MODE,private fun getDecryptCipherForIv(iv: ByteArray): Cipher {return Cipher.getInstance(TRANSFORMATION).apply {init(Cipher.DECRYPT_MODE, getKey(), IvParameterSpec(iv))}}//加密秘钥,存储在keystroe中private fun getKey(): SecretKey {val existingKey = keyStore.getEntry("secret", null) as? KeyStore.SecretKeyEntryreturn existingKey?.secretKey ?: createKey()}private fun createKey(): SecretKey {return KeyGenerator.getInstance(ALGORITHM).apply {init(KeyGenParameterSpec.Builder("secret",KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT).setBlockModes(BLOCK_MODE).setEncryptionPaddings(PADDING).setUserAuthenticationRequired(false).setRandomizedEncryptionRequired(true).build())}.generateKey()}//把byte进行加密,写入IV,写入机密后的bytesfun encrypt(bytes: ByteArray, outputStream: OutputStream): ByteArray {val encryptedBytes = encryptCipher.doFinal(bytes)outputStream.use {it.write(encryptCipher.iv.size)it.write(encryptCipher.iv)it.write(encryptedBytes.size)it.write(encryptedBytes)}return encryptedBytes}//解码,读取IV,根据IV再解码fun decrypt(inputStream: InputStream): ByteArray {return inputStream.use {val ivSize = it.read()val iv = ByteArray(ivSize)it.read(iv)val encryptedBytesSize = it.read()val encryptedBytes = ByteArray(encryptedBytesSize)it.read(encryptedBytes)getDecryptCipherForIv(iv).doFinal(encryptedBytes)}}companion object {private const val ALGORITHM = KeyProperties.KEY_ALGORITHM_AESprivate const val BLOCK_MODE = KeyProperties.BLOCK_MODE_CBCprivate const val PADDING = KeyProperties.ENCRYPTION_PADDING_PKCS7private const val TRANSFORMATION = "$ALGORITHM/$BLOCK_MODE/$PADDING"}}

        

2.加密

val bytes = messageToEncrypt.encodeToByteArray()val file = File(filesDir, "secret.txt")if(!file.exists()) {file.createNewFile()}val fos = FileOutputStream(file)messageToDecrypt = cryptoManager.encrypt(bytes = bytes,outputStream = fos).decodeToString()

3.解密

 val file = File(filesDir, "secret.txt")messageToEncrypt = cryptoManager.decrypt(inputStream = FileInputStream(file)).decodeToString()

http://www.mmbaike.com/news/33092.html

相关文章:

  • 深圳市手机网站建设公司成人技能培训
  • ps怎么排版规划设计网站免费发布广告
  • 开展我国电子网站建设如何制作网页广告
  • 绍兴做网站公司流量神器
  • 国外做机器人的网站网站流量查询站长之家
  • 长春 万网 网站建设陕西网站seo
  • 杭州做企业网站小红书笔记关键词排名优化
  • 免费门户网站优化网站链接的方法
  • 建站 哪个网站系统好用文明seo
  • 网页升级访问正在跳转中seo服务是什么
  • 专业做互联网招聘的网站有哪些百度推广开户流程
  • 南昌企业网站建设必应搜索引擎国际版
  • wordpress如何上传主题seo包年优化平台
  • 专注昆明网站建设今日国际新闻摘抄十条
  • 诛仙2官方网站西施任务怎么做semi
  • 网站建设施工方案企业中层管理人员培训课程
  • 阿里云服务器创建网站上海外贸seo
  • php成品网站超市免费有效的推广网站
  • 青海高端网站建设价格seo如何优化的
  • 网站建设合同doc网站访问量查询工具
  • 沧州做网站如何建立网站 个人
  • 做网站 赚钱百度快照怎么优化排名
  • 做房地产网站站内优化
  • 开封市住房和城乡建设 网站竞价推广账户托管
  • wordpress产品页面模板下载aso关键词搜索优化
  • 网站难做吗关键词优化排名用什么软件比较好
  • 高端网站建设电话公司网络营销策划书
  • 网站设计就业前景如何东莞网站建设推广技巧
  • 网站规划在网站建设中的作用是深度搜索
  • 网站建设公司需要什么资质郑州网站营销推广公司