求一行代码的理解。

glietboys 2014-01-11 05:31:18
代码如下:

unsigned char decode(unsigned char chr, unsigned n1,unsigned n2)
{
int a =chr * n1 -2 * (n2 & (chr - 1) * n1);
return (unsigned char)a;
}

函数说明如下:
chr:加密后的字符
n1,n2:指定的常数。
返回值:解密的字符d
当n1,n2取合适值得时候,chr和d之间存在一一对应,比如n1=0x97, n2=0xC6
现在有两个问题
1:n1,n2取什么值得时候,chr和d之间会存在着一一对应。
2:上面的解密函数对应的加密函数应该是什么样的?

...全文
292 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
glietboys 2014-01-15
  • 打赏
  • 举报
回复
引用 7 楼 my_live_123 的回复:
n2可能是个掩码,保留右边的部分位!
这个回答有点靠谱了,问题的核心是求chr+2*(n2&chr)的逆运算。
glietboys 2014-01-14
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
将0~255带进chr参数,输出函数对应的返回值。
额,大神能不能花点时间看问题。 这个问题的核心是求And运算的逆运算,还是比较新颖的。 明天结贴。
一根烂笔头 2014-01-14
  • 打赏
  • 举报
回复
n2可能是个掩码,保留右边的部分位!
赵4老师 2014-01-13
  • 打赏
  • 举报
回复
将0~255带进chr参数,输出函数对应的返回值。
glietboys 2014-01-13
  • 打赏
  • 举报
回复
我已经想出来答案了,n1是奇数,n2任意,加密函数暂时不贴出来。 用AND来加密这种方法还是比较新颖的,大家以后可以用上面的函数+内联汇编来对字符串进行加密,还是比较有效果的。
熊熊大叔 2014-01-13
  • 打赏
  • 举报
回复
你还是到数学论坛上咨询比较好
richyhuang 2014-01-12
  • 打赏
  • 举报
回复
有逻辑运算的应该是不能倒推的。
templezy 2014-01-12
  • 打赏
  • 举报
回复
上面计算a的就是解密函数吧,你倒推一下就能推出加密函数

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧