metin C++加解密算法

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
typedef unsigned long DWORD;
typedef unsigned char BYTE;

//加解密常量
const DWORD	c_dwConst = 0x61C88647;

void yt_code(BYTE* pDst, BYTE* pSrc,int nSrcLen);
void yt_encode(BYTE* pDst, BYTE* pSrc, int nSrcLen);

//加解密KEY数组,全局变量
DWORD g_dwKeyArray[4];

int main()
{		
	
	BYTE byKey1[] = {0x5D, 0x42, 0x73, 0x50, 0x59, 0x7E, 0x7F, 0x7C, 0x45, 0x3A, 0x4B, 0x38, 0x41, 0x76, 0x47, 0x74};	
	BYTE byKey2[] = {0x34, 0x80, 0x1C, 0x64, 0xEE, 0x26, 0xA6, 0xCB, 0x24, 0x8F, 0x69, 0xAF, 0x41, 0x0B, 0x73, 0x4C};	
	BYTE byKey3[] = {0xE4 ,0x55 ,0xAA ,0xD2 ,0xB1 ,0x3E ,0x9C ,0xED ,0x5A ,0xD3 ,0x69 ,0xAF ,0x41 ,0x0B ,0x73 ,0x4C};

	//赋值给KEY数组
	for(int i = 0 ; i < 4 ; i++)	
		memcpy((BYTE*)&g_dwKeyArray[i],byKey2 + i * 4, 4);

	//加密测试
	BYTE pTest1[24] = {0x5 ,0x0 ,0x31 ,0x32 ,0x33 ,0x34 ,0x35 ,0x36 ,0x0 ,0x0 ,0x0 ,0x31 ,0x32 ,0x33 ,0x34 ,0x35 ,0x36 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0};
	BYTE* pTestRes1 = new BYTE[24]();
	yt_code(pTestRes1, pTest1,24);
	delete pTestRes1;

	//解密测试
	BYTE pTest2[8] = {0x7, 0x52,  0xC0, 0x80, 0x6D, 0x62, 0xF4, 0xA9};
	BYTE* pTestRes2 = new BYTE[8]();
	yt_encode(pTestRes2,pTest2,8);
	delete pTestRes2;	
	return 0;
}
void yt_code(BYTE* pDst, BYTE* pSrc,int nSrcLen)
{
	int nCnt = nSrcLen >> 3;
	DWORD dwBeg, dwBack;
	DWORD dwTempA, dwTempB, dwTempC;	
	for(int i = 0; i < nCnt; i++)
	{
		memcpy((BYTE*)&dwBeg,pSrc + i * 8,4);
		memcpy((BYTE*)&dwBack,pSrc + i * 8 + 4 ,4);
		DWORD dwEsi = 0;
		for(int j = 16; j >0; j--)
		{
			dwTempA = dwBack + dwEsi;
			dwTempB = dwTempA ^ g_dwKeyArray[0];

			dwTempA	= dwBack << 4;
			dwTempB  += dwTempA;

			dwTempA	 = dwBack >> 5;
			dwTempA += g_dwKeyArray[1];

			dwTempC	= dwTempB ^ dwTempA;
			dwBeg +=  dwTempC;
			dwEsi -= c_dwConst;

			dwTempA = dwBeg + dwEsi;
			dwTempB = dwTempA ^ g_dwKeyArray[2];

			dwTempA = dwBeg << 4;
			dwTempB += dwTempA;

			dwTempA = dwBeg >> 5;
			dwTempA += g_dwKeyArray[3];

			dwTempC = dwTempB ^ dwTempA;
			dwBack += dwTempC;
		}
		memcpy(pDst + i * 8,(BYTE*)&dwBeg,4);
		memcpy(pDst + i * 8 + 4,(BYTE*)&dwBack,4);
	}
	return;
}

void yt_encode(BYTE* pDst, BYTE* pSrc, int nSrcLen)
{
	int nCnt = nSrcLen >> 3;
	DWORD dwBeg, dwBack;
	DWORD dwTempA, dwTempB, dwTempC;	
	for(int i = 0 ; i < nCnt ; i++)
	{
		memcpy((BYTE*)&dwBeg,pSrc + i * 8, 4);
		memcpy((BYTE*)&dwBack,pSrc + i * 8 + 4 ,4);
		DWORD dwEsi = 0xE3779B90;
		for(int n = 16; n > 0; n--)
		{
			dwTempA = dwBeg + dwEsi;
			dwTempB = dwTempA ^ g_dwKeyArray[2];

			dwTempA = dwBeg << 4;
			dwTempB  += dwTempA;

			dwTempA = dwBeg >> 5;
			dwTempA += g_dwKeyArray[3];

			dwEsi +=c_dwConst;

			dwTempC = dwTempB ^ dwTempA;
			dwBack -= dwTempC;

			dwTempA = dwBack + dwEsi;
			dwTempB = dwTempA ^ g_dwKeyArray[0];

			dwTempA = dwBack << 4;
			dwTempB += dwTempA;

			dwTempA  =  dwBack >> 5;
			dwTempA += g_dwKeyArray[1];

			dwTempC = dwTempB ^ dwTempA;
			dwBeg -= dwTempC;
		}
		memcpy(pDst + i * 8,(BYTE*)&dwBeg, 4);
		memcpy(pDst + i * 8 + 4,(BYTE*)&dwBack, 4);
	}
	return;
}

简单实用的加密解密算法 <br />今天工作需要 ,学习到一个简单的加密解密算法 ,简单实用。<br /> <br />基于vc6 :<br /> <br />// 常量<br />#define C1 52845<br />#define C2 22719<br /><br />CString Encrypt(CString S, WORD Key) // 加密函数<br />{<br /> CString Result,str;<br /> int i,j;<br /> <br /> Result=S; // 初始化结果字符串 阅读详情

相关推荐

300多种加密解密算法C++)源代码

300多种加密解密算法C++)源代码 300多种加密解密算法C++)源代码

tea系列加密算法学习笔记

tea系列加密算法概述tea算法xtea算法xxtea算法总结 概述   最近在做ctf逆向的题目中多次遇到了该算法,因此打算重写一篇完整的博客来详细学习下该算法。   TEA(Tiny Encryption Algorithm),是一种分组加密算法,实现过程比较简单,从其名字也能看出这是一种微型的加密算法,效率极高。该系列一共有三种算法,tea --> xtea --> xxtea,从右往左依次是前面的升级版。此系列算法都使用了一个神秘常数作为倍数,源于黄金比率,程序中一般写作0x9E3779

lifanxin的博客 4722

各种加解密算法c++源码

各种加解密算法c++源码,AES,DES,RSA512,RSA1024,RSA2048,SHA等等

171207 逆向-JarvisOJ(病毒数据分析)(2)

1625-5 王子昂 总结《2017年12月7日》 【连续第433天总结】 A. JarvisOJ-Re-病毒数据分析(2) B. 继续分析 加密算法的识别插件没有识别出来,只能自己来查找了 核心函数sub_401AD0算法中出现了一个特征常数:v12 -= 0x61C88647;百度其发现它可能是RC5、RC6、TEA加密算法,常数通常为加法,以下式出现+0x9e3779b9;RC算

whklhhhh的博客 410

常见加密算法浅析

DES3加密仿真结果:     解密仿真结果:     用软件验证结果正确。   DES: 明文/密文:64bits; 秘钥:56bits+8bits(校验值) 1. 64bits初始P置换,然后拆分为两个32bits,Li,Ri; Ri=Li-1f(Ri-1,Ki) Li=Ri-1   2. f运算f(Ri-1,Ki) f(A,J):A为32bit,J是48bit

frank_wff的专栏 2065

加密解密算法之base64

base64编解码

re1wn 1500

c++加解密算法总结

数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。非对称加密算法需要两个密钥来进行加密和解密,分别是公钥和私钥。公钥和私钥成对存在,如果用公钥对数据进行加密,那么只有使用对应的私钥才能解密

www_dong的博客 3234

C++】简单的C++加解密算法

利用位异或计算的对称性,采用appkey和appsecret进行异或计算,达到加解密的效果。

weixin_43500200的博客 278

0x61c8847的秘密

0x61c88647的秘密 摘要 :java1.4之前,ThreadLocals处于其对于高性能代码无用的线程争论。在新的设计中,每一个线程包含自己的ThreaLocalMap,这对于性能的提升是全面的,然而,我们依然面临着由于长时间运行线程的ThreadLocalMap的值没有被清理导致的内存泄露问题。 我注意到在我的java专业硕士课程的示例中,并不是每次ThreadLocal...

ACMer_Ding的专栏 1349

为什么使用0x61c88647

在Java1.4之前,ThreadLocals会导致线程之间发生竞争。在新的设计里,每一个线程都有他们自己的ThreadLocalMap,用来提高吞吐量,然而,我们仍然面临内存泄漏的可能性,因为长时间运行线程的ThreadLocalMap中的值不会被清除 在Java的早期版本中,ThreadLocals在多个线程进行访问的时候存在竞争问题,使得它们在多核应用程序中几乎无用。在Java 1.4中,引...

weixin_33859504的博客 3927

AES加解密C++实现

一、AES介绍 AES,高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 下面简单介绍下各个部分的作用与意义: 明文P 没有经过加密的数据。 密钥K 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给

lixiang987654321的专栏 1万+

C++版 DES加解密算法,3DES加解密算法,MAC算法

C++版 DES加解密算法,3DES加解密算法,MAC算法 适合金融行业加解密计算,等操作

Metin2 Client Source

Metin2 Client Source

简单的加密/解密算法_/c++

关于加密和解密问题,有的加密算法是不存在解密算法的(原因就是加密算法的不可逆性,即无法通过算法将密文还原),有的加密存在解密算法(原因是其加密过程是可逆的,即可以通过逆向算法将密文还原)。然而单独的一种加密算法不一定可靠,这时可以将多种加密算法组合使用。至于相关的加密算法各位自己去了解。        下面介绍一个简单的加密/解密算法实例,希望对此加密解密算法有一定认识:     ...

qq_36557960的博客 8697

C语言实现RC4加密算法

加密原理 Rc4加密步骤 1、先初始化状态向量S(256个字节,用来作为密钥流生成的种子1) 按照升序,给每个字节赋值0,1,2,3,4,5,6…,254,255 2、初始密钥(由用户输入),长度任意 如果输入长度小于256个字节,则进行轮转,直到填满 例如输入密钥的是1,2,3,4,5 , 那么填入的是1,2,3,4,5,1,2,3,4,5,1,2,3,4,5… 由上述轮转过程得到...

进击的小小白 2万+

c++实现AES加密解密算法

本文讲解c++实现AES加密解密功能,主要包含两部分: 实现AES加密解密功能的静态库 实现调用静态库的测试文件 本文代码是在win10系统,VS2013下调试。 一、AES加解密静态库 创建静态库工程CAesLib 创建外部调用类CAes256 #ifndef ENCRYPT_DECRYPT_H #define ENCRYPT_DECRYPT_H #include <string> using namespace std; class CAes256 { public: CAe

丁爸的博客 6037

c++生成公钥和私钥并对字符串加密和解密

// CreatRsaTest.cpp : Defines the entry point for the console application. // #include "stdafx.h" // // //int _tmain(int argc, _TCHAR* argv[]) //{ // return 0; //} #include #include //#in

ghevinn欢迎您光临 9746

C++加密解密库之选择

项目中有这样一个需求,客户端登陆服务器时,为保证信息安全,需要对用户的密码进行加密传输,在服务器端接受到之后进行相应的解密。 一、加密算法分类 对称加密算法、不对称加密算法、不可逆加密算法 1、对称加密算法 特点:较早、技术成熟原理: 数据发信方将明文和加密秘钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去;收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆...

weixin_34415923的博客 1686

关于HOOK WINAPI函数

有时候要研究游戏封包或者需要对其进行修改,则最好的方法是HOOK他的网络API函数,如用于发送封包的send函数和 用于接受的recv,WSARecv函数等等。 将HOOK代码写到DLL中,然后通过修改游戏运行程序的输入表去加载这个dll从而达到劫持API的作用! 修改PE文件的输入表方法:最简单的就是试用PE工具LordPE了,打开程序,选择目录,点击输入表,然后右键增加输入表

Debug8的专栏 2062
上一篇: Lesson20 Hook与数据编程
下一篇: 关于HOOK WINAPI函数
Debugyt
博客等级 码龄18年 7粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值