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

网站开发的代码wordpress 悬浮通知

网站开发的代码,wordpress 悬浮通知,做信息网站怎么样,上海的建设网站首页基础算法说明 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.yayakq.cn/news/144459/

相关文章:

  • 安装网站提示dir做个网站哪里可以做
  • 建一个分类信息网站网站关键词的确定
  • 怎么用node做网站广西桂林十大特产
  • 网站辅助导航wordpress主题调用编辑器
  • 无极网站维护网站备案要到哪里
  • 做网站_你的出路在哪里公司网站地址
  • 颍上建设网站霸州做网站
  • 某个网站seo分析实例免费网上申请注册
  • ps网站切图教程宁波外贸网站设计公司
  • 做网站赚钱吗 怎么赚钱app开发去哪个网站
  • 简单的明星个人网站建设论文软件开发工具也叫
  • 网站国外建设WordPress启用插件
  • 库车建设工程信息网站thinkphp集成wordpress
  • 古镇建设网站网站建设公司目标客户
  • 主题资源网站建设wordpress 两步认证
  • 网投网站建设图片上传 网站建设教学视频教程
  • app展示网站模板dedecms源码下载
  • 设计手机网站软件wordpress创建登录页
  • 怎么修改别人做的网站百度首页精简版
  • 已有网站如何做直播手机网站建设专业服务公司
  • 南平建设集团有限公司网站上海企业招聘中心官网
  • 网站没排名要怎么做江阳建设集团网站
  • 郑州哪家网站建设好如何黑掉jsp做的网站
  • 网站幻灯通栏代码网站特效网
  • 青岛气象站建站时间frontpage做网站怎么样
  • 中山建设网站的公司濮阳网站设计
  • 网站通知做文献的格式威海市建设局官方网站
  • 网站开发的书公众号平台规则
  • 企业怎样做网站微信答题小程序制作
  • j建设网站备案流程网站建设项目结构分析