文件字符串加密解密的最简单的方法

在程序设计中,无论是代码、参数表、还是图片,除了那些开源的项目之外,

大都不希望别人能轻易看懂并识别。因此,对文件进行加密和解密就是一个重要的工作了。(字符串同理)

 

看似挺复杂的,其实,想要简单也可以。

复杂的如Base64算法的加密解密、encryptjs算法等,都会加大文件Size。

而最简单的,莫过于直接将文件用二进制(byte)异或或者反向处理,而文件大小不变!!。

 

处理基础:将原文件用二进制读取,存成byte数组

一:反向存储思路

将byte数组反序,再写入文件。

比如:”123456abcd”,存成:dcba654321,

如果文件中带有汉字,那么反序后,就会变成不可识别的字符,更不好识别了

这种方法的弊端在于,如果文本文件大部分是普通的字母数字,那么反序后很容易看出来是反转的。

 

二:单一加法处理

将byte数组的每个字节,都加上一个 数a,如果得数大于255,就减去256。

比如:“123456abcd”,加上32的话,就变成:”QRSTUV*****”

 

三:密钥加法处理

设置密钥为 key = “abcdedg”

将byte数组的每个字节,按顺序分别加上key的值,那么就更不容易被看出来了。

 

解密方法:

把加密算法反处理,就可以了。

 

特别记事:

1、lua 的将byte转成string 的方法,可以直接 用 string.sub(unpack(byteList)) 就可以,

但是unpack的最多参数在8000左右,所以,byteList的长度不能超过8000,

我们可以在n = 5000左右截断,当然,要注意,如果第n个字节是汉字字节,那么就要再取3个字节才能正式截断,

否则你的字符就乱码了。

 

2、cocos2dx的部分版本StringUtils::format的最大字节数是1024*100,即100k,超过部分将被丢弃

因此,如果我们的文件长度超过100k,就需要自己写字符串格式化方法(参照StringUtils::format,改造一下就可以)

你可能感兴趣的:(javascript,ios,android,studio,小程序)