XOR 加密
XOR运算
XOR
运算,中文称为“异或运算”。
它的定义是:两个值相同时,返回false
,否则返回true
。也就是说,XOR
可以用来判断两个值是否不同。
对应的真值表如下:
输入 A B | 输出 A XOR B |
---|---|
0 0 | 0 |
0 1 | 1 |
1 0 | 1 |
1 1 | 0 |
XOR 应用
XOR 运算有一个很奇妙的特点:如果对一个值连续做两次 XOR,会返回这个值本身。
// 第一次 XOR
1010 ^ 1111 // 0101
// 第二次 XOR
0101 ^ 1111 // 1010
加密数据
iOS加密数据如下:
循环遍历数据中的每一个字节,每个字节对应的数据与加密key对应的值做异或运算,然后把异或后的数据与原数据做交换。
-(NSString *)obfuscate:(NSString *)string withKey:(NSString *)key { NSData* bytes = [string dataUsingEncoding:NSUTF8StringEncoding]; Byte *myByte = (Byte *)[bytes bytes]; NSData* keyBytes = [key dataUsingEncoding:NSUTF8StringEncoding]; Byte *keyByte = (Byte *)[keyBytes bytes]; int keyIndex = 0; for (int x = 0; x < [bytes length]; x++) { myByte[x] = myByte[x] ^ keyByte[keyIndex]; if (++keyIndex == [keyBytes length]) { keyIndex = 0; } } //可以直接返回NSData NSData *newData = [[NSData alloc] initWithBytes:myByte length:[bytes length]]; NSString *aString = [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding]; return aString; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2015-09-02 Android 带你从源码的角度解析Scroller的滚动实现原理
2015-09-02 Android中ListView.getCount()与ListView.getChildCount()区别和OnScrollListener()各个参数的区别