无混淆字符串函数
unobfuscating string function
假设我有一个字符串:"
String input = "5;5;5;5;"
并插入到这个函数中:
for(int i=input.length()-1; i>=0; i--){
output += (QChar)((input[i].unicode() + 32) + 8160);
}
return output;
输出:※‵※‵※‵※‵
我怎么写一个解密函数?
我知道我可以这样做:
for(int i=input.length()-1; i>=0; i--){
output += (QChar)(input.unicode()-32 - 8160);
}
return output;
但是为什么会这样呢:
for(int i=input.length()-1; i>=0; i--){
output += (QChar)((input.unicode()-32)%255); //Get ASCII character
}
return output;
这只是巧合吗?还是我不懂数学。我知道,试图反转模数操作几乎是不可能的,除非你知道你想要的x
的范围。
(1 + x) % 4 = 2
x可以是5,9,13,…
第二个解密函数有效,因为8160恰好是255的倍数,并且原始值包含在0-254范围内。
看看你的例子,x
可以是任何n
的1+4n
形式的任何数字。同样,对于第二个解密函数,input.unicode()-32+255*n % 255
对于n
的任何小值都具有相同的值。只要在计算过程中没有溢出),包括n=-32
,它对应于255*(-32)=-8160
。
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何从void函数输出字符串
- 使用用户定义函数的字符串反转
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 在c++构造函数中使用随机字符串生成器
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- C++:如何使函数只返回作为列表一部分的字符串
- 如何在C++中的同一函数中使用字符串和双精度
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- 对函数 PlaySound 使用字符串变量
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 构造函数字符串参数未设置窗口标题
- C++默认构造函数:字符串参数与字符串参数()
- 使用函数C++字符串输入
- c++模板函数字符串类型不匹配