CBrother脚本异或加密与C++异或加密函数
异或对于数据加密来说是最简单的方式,在一般的安全性要求不是非常高的地方,异或加密是最好的选择。
C++异或加密代码
1 int g_PWD = 0xffee00aa; //密码 2 void XORBuf(char *data,int len) 3 { 4 int *buf = (int *)data; 5 int num = len >> 2;//够4个字节的按整形异或 6 for (int i = 0 ; i < num ; i++) 7 { 8 buf[i] ^= g_PWD; 9 } 10 11 //不够4个字节的按位异或 12 int tailnum = len & 0x3; 13 if (tailnum > 0) 14 { 15 char *Byte = (char*)(buf + num); 16 char *key = (char*)&g_PWD; 17 18 for (int k = 0 ; k < tailnum ; k++) 19 { 20 Byte[k] ^= key[k]; 21 } 22 } 23 }
CBrother异或加密代码
var g_PWD = 0xffee00aa; //全局密钥 function XORCode(byteArray,len) { var num = len >> 2; var ilen = num * 4; for (var i = 0 ; i < ilen ; i += 4) //够4个字节的 { var b = byteArray.getByte(i) ^ (g_PWD & 255); var b1 = byteArray.getByte(i + 1) ^ (g_PWD >> 8 & 255); var b2 = byteArray.getByte(i + 2) ^ (g_PWD >> 16 & 255); var b3 = byteArray.getByte(i + 3) ^ (g_PWD >> 24 & 255); byteArray.setByte(i,b); byteArray.setByte(i + 1,b1); byteArray.setByte(i + 2,b2); byteArray.setByte(i + 3,b3); } //下面处理不够四个字节的 var dlen = len - ilen; if(dlen >= 1) { var b = byteArray.getByte(i) ^ (g_PWD & 255); print b; byteArray.setByte(i++,b); } if(dlen >= 2) { var b = byteArray.getByte(i) ^ (g_PWD >> 8 & 255); print b; byteArray.setByte(i++,b); } if(dlen >= 3) { var b = byteArray.getByte(i) ^ (g_PWD >> 16 & 255); byteArray.setByte(i++,b); } }
对比一下还是很容易理解的
原文地址:https://www.cnblogs.com/aibiancheng123/p/10270549.html
时间: 2024-10-29 14:16:24