使用Openssl库对RC4进行程序设计

部分注释代码是来源于网络,为了方便大家对库函数的理解,在注释的下方添加上自己的代码用于代替注释

#include <openssl/rc4.h>
#include <string.h>
#include <iostream>
using namespace std;
void TestRc4Encrypt()
{
	char code[64] = { 0 };
	int codelen = sizeof(code);
	//memcpy_s(code, 64, "This is secrect", 15);
	gets_s(code);
	cout << "before encrypt :" << code << endl;
	unsigned char *outbuffer = new unsigned char[codelen];

	//用指定密钥对一段内存进行加密,结果放在outbuffer中  
	RC4_KEY rc4_key;
	unsigned char* keystring = new unsigned char[64];
	cout << "input key:";
	cin >> keystring;
	cout << "keystring:" << keystring << endl;
	// 参数:(密钥对象,密钥数据的长度,密钥数据)
	// RC4_set_key(&rc4_key, 7, (unsigned char *)"zenraoli");
	RC4_set_key(&rc4_key, sizeof(keystring), keystring);
	// 参数:密钥对象,数据长度,输入数据,输出数据
	RC4(&rc4_key, codelen, (unsigned char *)code, outbuffer);
	cout << "after encrypt :" << outbuffer << endl;

	//用指定密钥对outbuffer中的密文进行解密,结果放回原来的内存  
	memset(code, 0, sizeof(code));
	//RC4_set_key(&rc4_key, 7, (unsigned char *)"zenraoli");//这里必须再次设置密钥  
	RC4_set_key(&rc4_key, sizeof(keystring), keystring);
	RC4(&rc4_key, codelen, outbuffer, (unsigned char *)code);
	cout << "after decrypt :" << code << endl;

	if (outbuffer)
	{
		delete[] outbuffer;
		outbuffer = NULL;
	}
}
int main(void)
{
	TestRc4Encrypt();
	getchar();
	return 0;
}

RC4() 函数的功能主要是进行异或操作,因此第一次使用RC4是加密操作,第二次用RC4异或就是解密操作。

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值