我现在对一个文本中的某几个单词进行加密,并将加密的单词填回去,得到新的文本。
现在我想快速定位已经被加密的单词并解密回去,怎么做到?
其实要解决你的这个问题也不是不可以,但是加标识位是最简单的。
一、对加密后的字符串加标识位及长度,如 abcdeadafdafF12asfdllaskjuckaajaF5kduecajioasjioasioas;F为标识符,12是长度,asfdllaskjuc是加密后的串;类似的类推;
二、如微博使用#话题#的方式,取##之间的字符;
三、ajipaiaiaoakewuwqe-qyueee1816期间哦欸经方琼金额非法83.1866的男生帮我7afjnajnajh,如这样子的文本,你需要知道就只能是加密前知道加密的字符位置,就需要单独维护一个位置和加密后字符串长度的表格,然后根据位置来和长度来取出解密回填。
四、维护一个JSON,比如你的字符串原文是 The NoClassDefFoundError class lives in the java.lang package, which stands for No Class Definition Found Error. 现在对进行加密lives 和stands 进行加密,加密后比如是 living 和 stead,加密后就是The NoClassDefFoundError class living in the java.lang package, which stead for No Class Definition Found Error.同时维护一个加密后的JSON 如下:
{
"source01":"The NoClassDefFoundError class ",
"encrypt01":" living ",
"source02":"in the java.lang package, which ",
"encrypt02":" stead ",
"source03":" for No Class Definition Found Error."
}
要想还原时只需对JSON进行解析后针对 encrypt 相关的片段解密,并最终生成解密后的字符串,这种方式灵活度最好,比标志位灵活,但会有数据荣誉存储问题等。
以上希望可以解决你的问题。
如果你是部分字符加密成字符,那么你怎么知道哪个字符是加密过的?比如说你加密成base64, 如果我原文本就是这样的,那你怎么区分呢
如果将可见字符加密成不可见字符,那就比较简单了,先确定字符编码,遍历找到不可见字符就好
可以建一个hash表存储对应单词和字节位的映射关系
可以记录下来加密位置以及长度,将这些信息保存下来,解密的时候用。但是要是文本进行修改,就可能会失效。需要提前处理
以关键字作为开头,才知道是加密的