算法|MCGS用户程序云端授权系统设计( 二 )


使用Base64就需要了解Base64 , Base64算法很简单只需要把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24) , 之后在6位的前面补两个0 , 形成8位一个字节的形式 。 如果剩下的字符不足3个字节 , 则用0填充 , 输出字符使用'=' , 因此编码后输出的文本末尾可能会出现1或2个'=' , 使用MCGS脚本实现这一操作也不算简单但可以实现 , 先将Base64编码表使用字符串变量一一存储 , 比如将base64_list的初值赋予“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/” , 也可以自定义密码本(每个字符都必须唯一对应)对应的加密时也需要使用对于密码本加密 , 上述字符串顺序不可乱 , 乱了就是不再是Base64编码表 。
MCGS加密过程讲解通过!InStr(1base64_list”M”)查找加密字符的码值 , 解出的码值使用!I2Bin(s)转换为二进制字符(不足6字节前面填零) , 再通过字符串拼接合成原始二进制字符串 , 将“=”忽略不转换(因为Base64把三个字节分成四个字节 , 不足3个字节 , 则用0填充 , 输出字符使用'=') , 使用!Mid(str18)和!Bin2I(s)转换为ASCII码值 , 在使用!I2Ascii(s)转换为ASCII字符 , 拼接这些字符串就可以得到明文 。
解决了怎么加密 , 现在需要考虑对什么数据进行加密 , 这取决于我们要实现怎样的授权系统 , 比如 , 实现云端修改账户模式 , 这样就需要预先定义模式对应码值表(9573-长期授权 , 6685-授权1天等等) , 为了保证码值的安全甚至可使用当前时间对码值进行保护 , 实现动态密钥 。 或者利用云端设置有效时间 , 也就是需要对结束时间的时间戳进行加密 。
本文仅探讨算法和实现方法 , 有时间再讲解算法的实现 。