added codes of Crypt in CMUtil
This commit is contained in:
93
src/crypt/Overflow.cpp
Normal file
93
src/crypt/Overflow.cpp
Normal file
@@ -0,0 +1,93 @@
|
||||
#include<hgl/type/DataType.h>
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
namespace crypt
|
||||
{
|
||||
/**
|
||||
* 溢出加密
|
||||
* @param target 加密后的数据存放区
|
||||
* @param source 加密前的数据存放区
|
||||
* @param size 数据长度
|
||||
* @param key 密码
|
||||
* @param key_size 密码长度
|
||||
*/
|
||||
void OverflowEncrypt(void *target, void *source, int size, void *key, int key_size)
|
||||
{
|
||||
int n;
|
||||
uint8 *key_p;
|
||||
uint8 *tp, *sp;
|
||||
|
||||
n = key_size;
|
||||
key_p = (uint8 *)key;
|
||||
|
||||
tp = (uint8 *)target;
|
||||
sp = (uint8 *)source;
|
||||
|
||||
while (size--)
|
||||
{
|
||||
uint tmp = (*sp) + (*key_p);
|
||||
|
||||
if (tmp > 0xFF)
|
||||
*tp = tmp - 0x100;
|
||||
else
|
||||
*tp = tmp;
|
||||
|
||||
*key_p ^= *tp;
|
||||
|
||||
tp++;
|
||||
sp++;
|
||||
|
||||
if (--n == 0)
|
||||
{
|
||||
n = key_size;
|
||||
key_p = (uint8 *)key;
|
||||
}
|
||||
else
|
||||
key_p++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 溢出解密
|
||||
* @param target 解密后的数据存放区
|
||||
* @param source 解密前的数据存放区
|
||||
* @param size 数据长度
|
||||
* @param key 密码
|
||||
* @param keysize 密码长度
|
||||
*/
|
||||
void OverflowDecrypt(void *target, void *source, int size, void *key, int key_size)
|
||||
{
|
||||
int n;
|
||||
uint8 *key_p;
|
||||
uint8 *tp, *sp;
|
||||
|
||||
n = key_size;
|
||||
key_p = (uint8 *)key;
|
||||
|
||||
tp = (uint8 *)target;
|
||||
sp = (uint8 *)source;
|
||||
|
||||
while (size--)
|
||||
{
|
||||
if (*key_p > *sp)
|
||||
*tp = *sp + 0x100 - (*key_p);
|
||||
else
|
||||
*tp = *sp - (*key_p);
|
||||
|
||||
*key_p ^= *sp;
|
||||
|
||||
tp++;
|
||||
sp++;
|
||||
|
||||
if (--n == 0)
|
||||
{
|
||||
n = key_size;
|
||||
key_p = (uint8 *)key;
|
||||
}
|
||||
else
|
||||
key_p++;
|
||||
}
|
||||
}
|
||||
}//namespace crypt
|
||||
}//namespace hgl
|
Reference in New Issue
Block a user