热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javarc4算法_RC4加解密算法C

***来源:百度百科*运行环境:kaliLinux*程序开始#include#includetypedefunsignedlongULONG;*初始化函

/**

*    来源:百度百科

*    运行环境:kaliLinux

*/

//程序开始

#include

#include

typedef unsigned longULONG;

/*初始化函数*/

void rc4_init(char*s, char*key,long Len)

{

int i = 0, j = 0;

char k[256] = { 0 };

char tmp = 0;

for (i &#61; 0; i<256; i&#43;&#43;)

{

s[i] &#61; i;

k[i] &#61; key[i%Len];

}

for (i &#61; 0; i<256; i&#43;&#43;)

{

j &#61; (j &#43; s[i] &#43; k[i]) % 256;

tmp &#61; s[i];

s[i] &#61; s[j];//交换s[i]和s[j]

s[j] &#61; tmp;

}

}

/*加解密*/

void rc4_crypt(char*s, char*Data,long Len)

{

int i &#61; 0, j &#61; 0, t &#61; 0;

long k &#61; 0;

char tmp;

for (k &#61; 0; k

{

i &#61; (i &#43; 1) % 256;

j &#61; (j &#43; s[i]) % 256;

tmp &#61; s[i];

s[i] &#61; s[j];//交换s[x]和s[y]

s[j] &#61; tmp;

t &#61; (s[i] &#43; s[j]) % 256;

Data[k] ^&#61; s[t];

}

}

int main()

{

char s[256] &#61; { 0 }, s2[256] &#61; { 0 };//S-box

char key[256] &#61; { "justfortest" };

char pData[512] &#61; "这是一个用来加密的数据Data";

long len &#61; strlen(pData);

int i;

printf("pData&#61;%s\n", pData);

printf("key&#61;%s,length&#61;%d\n\n", key, strlen(key));

rc4_init(s, (char*)key, strlen(key));//已经完成了初始化

printf("完成对S[i]的初始化&#xff0c;如下&#xff1a;\n\n");

for (i &#61; 0; i<256; i&#43;&#43;)

{

printf("%02X", s[i]);

if (i && (i &#43; 1) % 16 &#61;&#61; 0)putchar(&#39;\n&#39;);

}

printf("\n\n");

for (i &#61; 0; i<256; i&#43;&#43;)//用s2[i]暂时保留经过初始化的s[i]&#xff0c;很重要的&#xff01;&#xff01;&#xff01;

{

s2[i] &#61; s[i];

}

printf("已经初始化&#xff0c;现在加密:\n\n");

rc4_crypt(s, (char*)pData, len);//加密

printf("pData&#61;%s\n\n", pData);

printf("已经加密&#xff0c;现在解密:\n\n");

//rc4_init(s,(char*)key,strlen(key));//初始化密钥

rc4_crypt(s2, (char*)pData, len);//解密

printf("pData&#61;%s\n\n", pData);

return 0;

}

//程序完

58a1e16cc8bd5a2d1cee57b297e26318.png



推荐阅读
  • GCC(GNU Compiler Collection)是GNU项目下的一款功能全面且高效的多平台编译工具,广泛应用于Linux操作系统中。本文将详细介绍GCC的特点及其基本使用方法。 ... [详细]
  • 多用户密码验证与加密登录系统
    本文介绍了一种基于多用户密码文件的加密登录方法,通过读取用户密码文件并使用简单的加密算法实现安全登录。文中详细描述了程序的设计思路及其实现过程。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 本文介绍了JSP的基本概念、常用标签及其功能,并通过示例详细说明了如何在JSP页面中使用Java代码。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 择要:Fundebug的JavaScript毛病监控插件同步支撑Vue.js异步毛病监控。Vue.js从降生至今已5年,尤大在本年2月份宣布了严重更新,即Vue2.6。更新包含新增 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 深入解析链表成环问题:剑指Offer第22天的新视角
    本文将详细介绍链表成环问题的多种解法,包括哈希表法、JSON.stringify特殊解法及双指针法,并提供详尽的代码示例。阅读本文,你不仅能够掌握这一经典算法问题的核心技巧,还能了解到更多编程思维的拓展。 ... [详细]
  • 利用50行Python代码打造经典游戏,既是休闲娱乐,也是编程学习的利器
    Free Python Games 是一个适合学生和初学者的项目,它不仅提供了高度的组织性和灵活性,还极大地激发了用户的探索与理解能力。 ... [详细]
  • 本文详细介绍了Spring AOP注解的基本概念及其实现方式,并通过实例演示了如何在项目中使用这些注解进行面向切面的编程。旨在帮助开发者更好地理解和运用Spring AOP功能。 ... [详细]
  • 本文探讨了如何利用数组来构建二叉树,并介绍了通过队列实现的二叉树层次遍历方法。通过具体的C++代码示例,详细说明了构建及打印二叉树的过程。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 工作中频繁在不同Linux服务器之间切换时,频繁输入密码不仅耗时还影响效率。本文介绍如何通过设置SSH密钥认证,简化登录流程,提高工作效率。 ... [详细]
  • 本文详细记录了一位求职者在搜狐进行的两次面试经历,包括面试的具体时间、面试流程、技术问题及个人感受。通过本次面试,作者不仅获得了宝贵的经验,还成功拿到了搜狐的录用通知。 ... [详细]
author-avatar
小老虎颖儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有