Kotlin KotprefEncryptSupport加密sharepreference

本文介绍了一个Kotlin扩展库Kotpref的加密支持实现。通过自定义CipherAdapter,实现了SharedPreferences存储内容的加密解密功能,支持Int、String等多种类型。

前言

最近在学习kotlin,发现一个比较不错的sharepreference库kotpref
它是利用kotlin的扩展和代理来实现的,使用起来也方便快捷。
但是,就是还差一个想要的功能,就是加密。
然后自己写了个KotprefEncryptSupport来支持一下。

安装

allprojects {
        repositories {
            maven { url 'https://jitpack.io' }
        }
    }
dependencies {
    compile 'com.github.fly7632785:KotprefEncryptSupport:1.0.1'
}

初始化

它已经包含了gson-support,所以,如果使用了这个库,就不用再接入gson-support了

class SampleApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Kotpref.init(applicationContext)
        // add Encrypt Support 
        Kotpref.gson = Gson()
        Kotpref.cipherAdapter = SharedPrefCipherAdapter(applicationContext)
    }
}

申明使用

    var password by ecStringPref("jafirPass")
    var code1 by ecNullableStringPref()
    var isMan by ecBooleanPref(true)
    var age1 by ecIntPref(23)
    var highScore1 by ecLongPref(1111111111L)
    var rate1 by ecFloatPref(0.5555f)
    var person1 by ecGsonPref(Person("g jafir", 21))
    var avatar21 by ecGsonPref(Avatar())
    var avatar22 by ecGsonNullablePref(Avatar())

支持 Int,String,Boolean,Long,Float,Gson

高级

如果你想自定义加密规则,也是可以的。
只需要自己实现一下CipherAdapter,然后实现一下encrypt和decrypt两个方法就可以了。例如

class SharedPrefCipherAdapter @Throws(Exception::class)
constructor(context: Context) : CipherAdapter {
    private val secretKey: SecretKey

    init {
        this.secretKey = AESUtil.generateKey(context)
    }

    override fun encrypt(raw: String): String {
        return AESUtil.execEncrypted(secretKey, raw)
    }

    override fun decrypt(encode: String): String {
        return AESUtil.execDecrypted(secretKey, encode)
    }
}

更多的细节可以看源码

默认的加密

库中已经集成了一个默认的加密adapter:SharedPrefCipherAdapter
采用的是AES、PBE混合的加密方式,AES加密内容,然后PBE加密secret key

Xml
<map>
    <long name="highScore" value="3901" />
    <float name="rate" value="0.4" />
    <string name="password">WUb7wV8SS18d9hEvUt8kPg==&#10;    </string>
    <string name="age1">vELsGwmt5Bhz1WkAuasEHA==&#10;    </string>
    <string name="avatar22">rN29eRFNgIlf6yIAV9cptoyabAkqmDqDtf6S4ElzPWIVS1YRMXw2avvYbyJseOZEOBqVE9kAAARV&#10;T4MpZ31fAw==&#10;    </string>
    <string name="avatar1">null</string>
    <string name="avatar21">rN29eRFNgIlf6yIAV9cpttcgywAfWQ9P21mqhkpLjhty0xyusdIZtGLibaD5gzdExLQhyLF2BbIR&#10;Vz7hM0a0KA==&#10;    </string>
    <string name="avatar">{&quot;icon&quot;:&quot;lion&quot;,&quot;updated_at&quot;:&quot;Dec 19, 2017 11:13:28 PM&quot;}</string>
    <string name="person1">gA4aAC4rCqoo9Vz3VCBgVtnerDMep/WhMsoUK736qJ4=&#10;    </string>
    <string name="code">451B65F6-EF95-4C2C-AE76-D34535F51B3B</string>
    <string name="isMan">gi8S6qu7Sklcx0oiYDGnsw==&#10;    </string>
    <set name="prizes">
        <string>New Born</string>
    </set>
    <int name="age" value="2" />
    <string name="highScore1">L5E9zu5NO5AQGFVZBmmHTA==&#10;    </string>
    <string name="name">chibatching Jr</string>
    <string name="rate1">Pa0WPZj6Of7DV8S4LYfp2g==&#10;    </string>
    <string name="code1">FZbcxuspUwL0HUdYvuQ6ltT/nWL+e5d3ZXtfTfPXGcccThyKavFb+7iB1bR8PGF6&#10;    </string>
    <string name="gameLevel">EASY</string>
</map>
1、解压后将tel文件夹上传到插件hack目录下 2、登录后台,打开:应用——插件中心——未安装插件——安装tel:电话114插件 3、安装好后,需要在:全局——导航设置——社区主导航——自定义添加导航目录如下: 电话114(黄页) 导航地址为:hack.php?H_name=tel 4、前台电话114分类不显示问题?需要在后台自己再添加一个新分类前台就会正常显示出来了; 5、找到ajax.php文件,以txt文本方式打开查看找到:$basename="../phpwind/hack.php?H_name=tel"; 6、修改上面查找到的../phpwind/根目录地址,否则前台将无法确认提交发布商家信息, 根据自己的实际地址目录文件名修改插件的根目录地址:(以“phpwind”为例) 根主目录修改成 $basename="phpwind/hack.php?H_name=tel"; 二级目录修改成 $basename="../phpwind/hack.php?H_name=tel"; 7、此插件是DZ官方售价200元,插件现已成功移植到PW8.7的版本,功能原来保持不变,目前已经测试可以在phpwind8.7GBK版本可以正常使用,8.3、8.5请自己测试吧!但愿都能用得上! 8、效果演示地址: http://love9mai.com/phpwind/hack.php?H_name=tel 9、使用声明,此插件添加了友情链接限制!亲,小弟我的是用8.7,从DZ移植过来也辛苦!只需要你加个关键词链接就可以免费正常使用了,官方是高价出售的,我认为你值得拥有了,说不定这个插件可以为你带来商机赚比这个200还要多呢!我也舍不得花大钱一个链接搞定! 10、如果你想需要修改限制添加为自己的友情链接请联系QQ:773433432 11、最后!欢迎到http://love9mai.com/phpwind/社区交流!还有部分好资源没分享出来呢!
PHPwind电话114商业插件DZ移植PW免费下载,使用问题欢迎到http://love9mai.com社区交流!使用方法按照如下步骤: 1、解压后将tel文件夹上传到插件hack目录下 2、登录后台,打开:应用——插件中心——未安装插件——安装tel:电话114插件 3、安装好后,需要在:全局——导航设置——社区主导航——自定义添加导航目录如下: 电话114(黄页) 导航地址为:hack.php?H_name=tel 4、前台电话114分类不显示问题?需要在后台自己再添加一个新分类前台就会正常显示出来了; 5、找到ajax.php文件,以txt文本方式打开查看找到:$basename="../phpwind/hack.php?H_name=tel"; 6、修改上面查找到的../phpwind/根目录地址,否则前台将无法确认提交发布商家信息, 根据自己的实际地址目录文件名修改插件的根目录地址:(以“phpwind”为例) 根主目录修改成 $basename="phpwind/hack.php?H_name=tel"; 二级目录修改成 $basename="../phpwind/hack.php?H_name=tel"; 7、此插件是DZ官方售价200元,插件现已成功移植到PW8.7的版本,功能原来保持不变,目前已经测试可以在phpwind8.7GBK版本可以正常使用,8.3、8.5请自己测试吧!但愿都能用得上! 8、效果演示地址:http://love9mai.com/phpwind/hack.php?H_name=tel 9、使用声明,此插件添加了友情链接限制!亲,小弟我的是用8.7,从DZ移植过来也辛苦!只需要你加个关键词链接就可以免费正常使用了,官方是高价出售的,我认为你值得拥有了,说不定这个插件可以为你带来商机赚比这个200还要多呢!我也舍不得花大钱一个链接搞定! 10、如果你想需要修改限制添加为自己的友情链接请联系QQ:773433432 11、最后!欢迎到http://love9mai.com/phpwind/社区交流!还有部分好资源没分享出来呢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值