C/C++实现的最基本的加解密函数代码

Crypt.h

#pragma once

class CCrypt
{
public:
	static BOOL Encrypt(BYTE* source,BYTE* destination,DWORD length);
	static BOOL Decrypt(BYTE* source,BYTE* destination,DWORD length);
};

Crypt.cpp
#include "Crypt.h"

const INT C1	= 52845;
const INT C2	= 22719;
const INT KEY	= 72957;

//进行加密的函数
BOOL CCrypt::Encrypt( BYTE* source,BYTE* destination,DWORD length )
{
	INT Key = KEY;

	if(!source || !destination || length <= 0)
		return FALSE;

	for(DWORD i = 0; i < length; i++)
	{
		//按照Key值进行1BYTE的平方,推8bit
		destination[i] = source[i]^Key>>8;
		//在下一BYTE中,通过C1、C2修改所要使用的KEY
		Key = (destination[i]+Key)*C1+C2;
	}

	return TRUE;
}

//进行解密的函数
BOOL CCrypt::Decrypt( BYTE* source,BYTE* destination,DWORD length )
{
	BYTE previousBlock;
	INT Key = KEY;

	if(!source || !destination || length <= 0)
		return FALSE;

	for(DWORD i = 0; i < length; i++)
	{
		//加密为BYTE单位
		previousBlock = source[i];
		//保存之前的块(Block),然后查看解密所使用的KEY
		destination[i] = source[i]^Key>>8;
		Key = (previousBlock+Key)*C1+C2;
	}

	return TRUE;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值