RC4算法c/c++语言实现

这篇具有很好参考价值的文章主要介绍了RC4算法c/c++语言实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.RC4算法

参考RC4加密算法的过程 代入例子计算

二.c语言实现

#include <stdio.h>
#include <string.h>
unsigned char sbox[256] = { 0 };
void swap(unsigned char* a, unsigned char* b)
{
	unsigned char tmp = *a;
	*a = *b;
	*b = tmp;
}
void init_sbox( unsigned char key[]) {
	for (unsigned int i = 0; i < 256; i++)//赋值
		sbox[i] = i;
	unsigned int keyLen = strlen((char*)key);
	unsigned char Ttable[256] = { 0 };
	for (int i = 0; i < 256; i++)
		Ttable[i] = key[i % keyLen];//根据初始化t表
	for (int j = 0, i = 0; i < 256; i++)
	{
		j = (j + sbox[i] + Ttable[i]) % 256;	//打乱s盒
		swap(sbox[i], sbox[j]);
	}
}
void RC4_enc_dec(unsigned char data[],unsigned char key[]){
	unsigned char k, i = 0, j = 0, t;
	init_sbox(key);
	unsigned int dataLen = strlen((char*)data);
	for (unsigned h = 0; h < dataLen; h++)
	{
		i = (i + 1) % 256;
		j = (j + sbox[i]) % 256;
		swap(sbox[i], sbox[j]);
		t = (sbox[i] + sbox[j]) % 256;
		k = sbox[t];	//求密钥流,并对明文加密
		data[h] ^= k;	
	}
}

int main()
{
	unsigned char data[1000] = { 0 };
	unsigned char key[100] = { 0 };
	printf("请输入需要加密的明文:\n");
	scanf("%s", data);
	printf("请输入密钥key:\n");
	scanf("%s", key);
	RC4_enc_dec(data, key);
	printf("加密后的密文是:\n,%s",data);
	RC4_enc_dec(data, key);
	printf("解密后的明文是:\n%s", data);
	return 0;
}

运行效果:

c++ rc4,Crypto,c++,c语言,算法,学习,经验分享

 文章来源地址https://www.toymoban.com/news/detail-534231.html

三.c++实现

#include <iostream>
#include <string>
using namespace std;
class RC4 {
private:
	unsigned char s[256];
	void swap(unsigned char& a, unsigned char& b)
	{
		unsigned char tmp = a;
		a = b;
		b = tmp;
	}
	void init_sbox(string key)
	{
		for (unsigned int i = 0; i < 256; i++)	//初始化s盒
			s[i] = i;
		unsigned char T[256] = { 0 };
		unsigned keylen = key.length();
		for (int i = 0; i < 256; i++)
			T[i] = key[i % keylen];				//根据密钥初始化t表
		for (int j = 0, i = 0; i < 256; i++)
		{
			j = (j + s[i] + T[i]) % 256;		//打乱s盒
			swap(s[i], s[j]);
		}
	}
public :
	void enc_dec(string& data,string key) {
		init_sbox(key);
		unsigned int datalen = data.length();
		unsigned char k, i = 0, j = 0, t;
		for (unsigned int h = 0; h < datalen; h++)
		{
			i = (i + 1) % 256;
			j = (j + s[i]) % 256;
			swap(s[i], s[j]);
			t = (s[i] + s[j]) % 256;
			k = s[t];
			data[h] ^= k;
		}

	}
};

int main()
{
	RC4 rc4 ;
	string data, key;
	cout << "请输入需要加密的明文:" << endl;
	cin >> data;
	cout << "请输入密钥key:" << endl;
	cin >> key;
	rc4.enc_dec(data, key);
	cout << "加密后的内容是:\n" << data << endl;
	rc4.enc_dec(data, key);
	cout << "解密后的内容是:\n" << data << endl;
	return 0;
}

运行效果:

c++ rc4,Crypto,c++,c语言,算法,学习,经验分享

 

到了这里,关于RC4算法c/c++语言实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络安全实验——RC4的实现

    ① 编码实现RC4,简单分析代码 ② 加解密个人信息,包含姓名学号,等相关信息 RC4是RonRivest为RSA公司在1987年设计的一种流密码。它是一个可变密钥长度、面向字节操作的流密码。该算法以随机置换作为基础。分析显示该密码的周期很可能大于 1 0 100 10^{100} 1 0 100 。每输出1字

    2024年01月22日
    浏览(32)
  • RC4Drop算法的工作原理揭秘:加密技术的进步之路

    RC4Drop算法是RC4算法的一种改进版本,旨在解决RC4算法在长时间加密过程中可能出现的密钥流偏置问题。RC4算法由Ron Rivest于1987年设计,是一种流密码算法,而RC4Drop算法则在此基础上加入了丢弃密钥字节的步骤,以增强安全性和随机性。 RC4Drop加密解密 | 一个覆盖广泛主题工具

    2024年03月12日
    浏览(44)
  • 【漏洞】SSL RC4 加密套件支持检测 (Bar Mitzvah)【原理扫描】

    1丶漏洞报告如下图所示 : 2丶修复漏洞流程如下 : (1)丶cmd 打开 - 终端 - 输入: gpedit.msc - 回车打开 - 本地组策略编辑器 (2)丶计算机配置-管理模板-网络-SSL配置设置 (3)丶双击 - SSL 密码套件顺序 (4)丶选择 - 已启用 - 修改SSL密码套件 - 应用 - 确定 3丶注意事项 配置完成之后需重启服

    2024年02月13日
    浏览(62)
  • RC4Drop加密技术:原理、实践与安全性探究

    1.1 加密技术的重要性 加密技术在当今信息社会中扮演着至关重要的角色。通过加密,我们可以保护敏感信息的机密性,防止信息被未经授权的用户访问、窃取或篡改。加密技术还可以确保数据在传输过程中的安全性,有效防止信息泄露和数据被篡改的风险。在网络通信、电

    2024年04月22日
    浏览(38)
  • SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)【原理扫描】修复方案

    SSL/TLS协议 RC4信息泄露漏洞被扫描出来,一般出现的问题在ssh和https服务上使用了RC4算法,修改配置文件就可以了 1.使用nmap扫描出来: nmap -sV --script ssl-enum-ciphers -p 443 ip 2.使用绿盟扫描 扫描出来显示CVE-2013-2566 apache: 1.禁止apache服务器使用RC4加密算法 2.重启apache服务 Nginx: 1.禁

    2024年02月16日
    浏览(35)
  • RC522模块学习

    目录 1.原理简介 2.SPI通信 3.获取卡号实验 3.驱动函数 参考: https://www.cnblogs.com/ivantang/p/3904025.html https://xiaolong.blog.csdn.net/article/details/117075834?spm=1001.2014.3001.5506 https://blog.csdn.net/weixin_47316662/article/details/124555292?spm=1001.2014.3001.5506 https://blog.csdn.net/qq_40574123/article/details/116722010?spm

    2023年04月08日
    浏览(33)
  • RC低通滤波硬件以及软件实现计算

    rc低通滤波算法(RC低通滤波硬件以及软件实现计算) 一阶 RC低通滤波硬件以及软件实现计算 一阶RC滤波硬件: rc低通滤波算法(RC低通滤波硬件以及软件实现计算)(1) 输入Vi,输出Vo 公式:Fcut_off(截至频率)= 1/2πRC;根据需要的截至频率去得出RC的值。 如果我们需要用软件实

    2024年02月21日
    浏览(45)
  • 基于FPGA的RC滤波器设计实现

    目录 简介: 传递函数 FPGA代码实现 总结 RC滤波器的特性基本情况介绍 RC一阶低通滤波介绍;RC滤波器电路简单,抗干扰性强,有较好的低频性能,并且选用标准的阻容元件易得,所以在工程测试的领域中最经常用到的滤波器是RC滤波器。 这里我们主要认识和介绍低通滤波器。

    2024年02月16日
    浏览(29)
  • MMDetection3D使用学习(mmdet v1.1 rc)

    本文所观看视频教程的mmdet3d版本为v1.0.0 rc5,而我使用的是v1.1.0 rc3。v1.0.0 rc5的一些实现可以参考我的另一篇博客基于MMDet3D的pointpillars和centernet推理(mmdet3d v1.0 rc)或者官方文档。本文会记录学习中遇到的问题。视频链接 支持点云、视觉、多模态检测算法,支持室内、室外场景

    2024年02月07日
    浏览(34)
  • STM32+RC522(实现对ic卡的增删改查)

    这是基于STM32F103C8T6和RFID识别模块,实现的对ic卡的增删改查,能够读取卡号,对卡内指定的区域进行数据修改。 感谢 物联网小菜鸟一枚 大佬代码思路 https://blog.csdn.net/m0_69428059/article/details/124259091 1.1STM32F103C8T6 1.2RFID-RC522识别模块 1.3按键模块 接线部分 STM32F103C8T6 RC522 PB12 SDA

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包