美文网首页密码学
「密码学」-RC4密码

「密码学」-RC4密码

作者: 雨落八千里 | 来源:发表于2019-10-07 21:11 被阅读0次
  1. 密钥流RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i字节异或密钥流第i字节;

  2. 状态向量S:长度为256,S[0],S[1].....S[255]。每个单元都是一个字节,算法运行的任何时候,S都包括0-2558比特数的排列组合,只不过值的位置发生了变换;

  3. 临时向量k:长度也为256,每个单元也是一个字节。如果密钥的长度是256字节,就直接把密钥的值赋给k,否则,轮转地将密钥的每个字节赋给k

  4. 密钥Key:长度为1-256字节,注意密钥的长度keylen与明文长度、密钥流的长度没有必然关系

初始化S

\

void rc4_init(unsigned char*s, unsigned char*key, unsigned long Len)
{
   int i = 0, j = 0;
   char k[256] = { 0 };
   unsigned char tmp = 0;
   for (i = 0; i<256; i++)
   {
       s[i] = i;
       k[i] = key[i%Len];
   }
   for (i = 0; i<256; i++)
   {
       j = (j + s[i] + k[i]) % 256;
       tmp = s[i];
       s[i] = s[j];//交换s[i]和s[j]
       s[j] = tmp;
   }
}

加解密

\

void RC4(unsigned char*s, unsigned char*Data, unsigned long Len)
{
   int i = 0, j = 0, t = 0;
   unsigned long k = 0;
   unsigned char tmp;
   for (k = 0; k<Len; k++)
   {
       i = (i + 1) % 256;
       j = (j + s[i]) % 256;
       tmp = s[i];
       s[i] = s[j];
       s[j] = tmp;
       t = (s[i] + s[j]) % 256;
       Data[k] ^= s[t];
   }
}

主函数

\

int main()
{
   unsigned char s[256] = { 0 }, s2[256] = { 0 };
   char key[256];
   printf("输入密钥:\n");
   scanf("%s",key);
   char pData[512];
   printf("输入明文:\n");
  scanf("%s",pData); 
   unsigned long len = strlen(pData);
   int i;

   rc4_init(s, (unsigned char*)key, strlen(key));
   
   for (i = 0; i<256; i++)
   {
       s2[i] = s[i];//加密解密的初始化s要相同
   }
   printf("加密密文:\n");
   RC4(s, (unsigned char*)pData, len);
   printf("pData=%s\n", pData);
   printf("解密明文:\n");
   RC4(s2, (unsigned char*)pData, len);
   printf("pData=%s\n", pData);
   return 0;
}

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \本文参考博客
\ \ \ \ \ \ \ \ \ \ \ \ \ \https://www.cnblogs.com/zibility/p/5404478.html
\ \ \ \ \ \ \ \ \https://blog.csdn.net/lc_910927/article/details/37599161

相关文章

  • Python_RC4Encode

    Python RC4加密 什么是RC4 RC4是美国密码学家罗纳德·李维斯特(Ron Rivest)在1987年设...

  • python实现RC4加密算法

    1. 背景介绍 1.1 RC4算法 在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法...

  • Rc4的加密和解密

    Rc4: 在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使...

  • CTF逆向涉及的各种加密算法

    rc4原理研究 在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加...

  • 「密码学」-RC4密码

    密钥流:算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是字节,那...

  • Python3.7实现RC4加密解密(超详细)

    在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密...

  • 关于区块链密码学

    什么是密码学 以下是密码学在维基百科中的解释: 密码学(英语:Cryptography)可分为古典密码学和现代密码...

  • 前后端数据传输安全——加密浅析

    加密 本文内容: 密码学起源 古典密码学 现代密码学 对称加密 非对称加密 数字签名 哈希 密码学起源: 在战争中...

  • 密码学基础知识

    密码学 推荐书籍 图解密码技术 结城浩 著 周自恒 译 密码学概览 密码学概览图密码学概览 消息的特性 机密...

  • 1.什么是密码学

    重点:密码学的主要功能及其含义现代密码学与信息安全的关系现代密码学的主要研究内容 1. 密码学定义 密码学是一个...

网友评论

    本文标题:「密码学」-RC4密码

    本文链接:https://www.haomeiwen.com/subject/hftvpctx.html