authcode php加密,Flutter 版的 authcode 加密/解密方法

php 有个加密解密的 authcode 方法,在写 Flutter 的时候涉及到数据加密,就写了个 Flutter 版的 authcode

特点

1、可设置加密 key

2、可设置过期时间

加密原理

根据加密key,获取 ascii 码映射表 box(打乱)

前十位为时间戳,主要用来判断是否过期,中间16位为加密的值,后面就是原始数据,然后求出每个字符的 255 位 ascii 码值,并和 box 获取的值进行异或位运算,最后用base64加密一下

Flutter 坑点

其实也不算是坑,应该只是我不熟 dart 语言而已

convert 包中的 ascii.decode 方法只能转换 127 的 ascii ,所以要使用字符串的 codeUnits

base64Decode 解密的字符串必须是 4 的倍数,否则会报错,因为加密返回时,去掉了 = 号,所以在解密时要补全

对于加密中文

加密中文时,必须使用 urlencode(Uri.encodeComponent(url)) 转换一下,当然解出来后也要 urldecode(Uri.decodeComponent(encodedUrl)) 一下

源码如下import 'dart:convert' as convert;

import 'package:crypto/crypto.dart';

import 'dart:typed_data';

class AuthCode {

//加密key

static const String KEY = '123456';

//过期时间,秒

static const int EXPIRY = 0;

//加密

static String encode(String str ,{String key : KEY, int expiry : EXPIRY}){

return _authcode(str,operation:'ENCODE',key: key,expiry: expiry);

}

//解密

static String decode(String str ,{St

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值