当前位置: 首页 > news >正文

萝岗区营销型网站建设和15岁女儿做很舒服网站

萝岗区营销型网站建设,和15岁女儿做很舒服网站,大秀平台app下载,优改网logo设计免费官网入口RC4是一种广泛使用的流密码#xff0c;它以其简洁和速度而闻名。区别于块密码#xff0c;流密码特点在于按位或按字节来进行加密。 RC4由Ron Rivest在1987年设计#xff0c;尽管它的命名看起来是第四版#xff0c;实际上它是第一个对外发布的版本。 RC4算法的实施过程简洁…RC4是一种广泛使用的流密码它以其简洁和速度而闻名。区别于块密码流密码特点在于按位或按字节来进行加密。 RC4由Ron Rivest在1987年设计尽管它的命名看起来是第四版实际上它是第一个对外发布的版本。 RC4算法的实施过程简洁明了主要包括初始化和生成密钥流这两个阶段。 下面我们就一边解析算法一边分析其代码实现。 初始化 该阶段的核心任务是利用一个可变长度的密钥来初始化一张S盒即一个包含0至255所有字节的256长度数组。初始化步骤如下 初始填充S盒按顺序排列0至255的数值。 使用密钥对S盒进行置换。每个S盒中的元素都会根据密钥中的字节进行一定的交换。这个过程叫做密钥调度算法KSA。 说的形象一点就是在桌子上有256个小盒子从0到255编号初始时每个盒子里面的数字和它的编号一样。现在你开始根据密钥来交换这些盒子里面的数字直到所有的盒子都被重新排列。 经过多轮置换这256个数字的顺序就变得无规律。将此与洗牌对比虽然结果看似随机实则完全受密钥控制。 现在我们来看一下代码实现 private static void initAndPermute(char[] byteKey) {if (byteKey.length  256 || byteKey.length  1) {System.out.println(Key length must be between 1 to 256 chars);} else {// Creation of initial state and key byteskeylength  byteKey.length;for (int i  0; i  256; i) {S[i]  i;K[i]  byteKey[i % keylength];}// Permuting state bytes based on values of key bytesint j  0;for (int i  0; i  256; i) {j  (j  S[i]  K[i]) % 256;int temp  S[i];S[i]  S[j];S[j]  temp;}} }第一个 for 循环里面就是初始化 S 盒。我们还看到同时也给 K 数组赋值了这里说明了一个问题K 的长度大于 256 之后后面的其实没用所以我们的密钥不用写太长除非写一个变种算法。 看第二个循环j (j S[i] K[i]) % 256; 我们把它看成一个数学表达式 j f(i)这个表达式最终会生成一个 0-255 之间的一个数字 j然后将 i 与 j 位置进行交换这样就扰乱了 S 盒的数字顺序。 操作 (PRGA) 在操作阶段RC4生成伪随机流称为密钥流。这个密钥流会与明文按位异或来生成密文。同样将密钥流与密文按位异或可以得到原始明文。操作过程如下 初始化两个指针i和j都开始于0。 在每次操作中i递增1j加上S盒在i位置的值并使用新的j值来更新S盒中的元素位置。 选取i和j指向的两个元素将它们加起来并根据这个总和得到S盒中的某个元素作为密钥流的一部分。 重复此过程直到生成了足够长的密钥流可以与明文进行异或操作。 上面的步骤比较难以理解但是我们利用数学的思想来看 首先定义两个变量 i 与 j然后给它们赋值i f(i), j f(i, j) 然后再定义一个变量 keykey f2(i, j) 。这个key就是根据 S 盒生成的密钥流只要 S 的顺序固定那么生成的密钥流就是固定的。有了密钥流那么我们就可以与明文做异或操作。 看代码 private static char[] encryptRC4(char[] plainText) {char[] cipherText  new char[plainText.length];int i  0;int j  0;int key;int plainTextLen  0;while (plainTextLen  plainText.length) {// Key generationi  (i  1) % 256;j  (j  S[i]) % 256;int temp  S[i];S[i]  S[j];S[j]  temp;key  S[(S[i]  S[j]) % 256];// EncryptioncipherText[plainTextLen]  (char) (plainText[plainTextLen] ^ key);plainTextLen;}return cipherText; }有的小伙伴可能想得多一点既然是使用异或做操作那么加密算法其实就是解密算法 是的异或这个东西很神奇 x ^ y ^ y 还是 x。既然加密算法保证了 S 一定的情况下生成的 key 是一样的所以解密算法可以直接使用加密算法。 C 实现 #define N 256   // 2^8void swap(unsigned char *a, unsigned char *b) {int tmp  *a;*a  *b;*b  tmp; }int KSA(char *key, unsigned char *S) {int len  strlen(key);int j  0;for(int i  0; i  N; i)S[i]  i;for(int i  0; i  N; i) {j  (j  S[i]  key[i % len]) % N;swap(S[i], S[j]);}return 0; }int PRGA(unsigned char *S, char *plaintext, unsigned char *ciphertext) {int i  0;int j  0;for(size_t n  0, len  strlen(plaintext); n  len; n) {i  (i  1) % N;j  (j  S[i]) % N;swap(S[i], S[j]);int rnd  S[(S[i]  S[j]) % N];ciphertext[n]  rnd ^ plaintext[n];}return 0; }int RC4(char *key, char *plaintext, unsigned char *ciphertext) {unsigned char S[N];KSA(key, S);PRGA(S, plaintext, ciphertext);return 0; } 总结 RC4的好处是它很简单很快在没有密钥的情况下只能使用暴力破解。所以你的密钥很重要你得特别小心使用它。
http://www.hkea.cn/news/14524223/

相关文章:

  • 陕西网站建设企业国外免费建站网站搭建
  • asp.net 当前网站做购物平台网站 民治
  • h5响应式网站建设方案提供网站建设课程报告
  • 装饰公司怎么做微网站一键配置wordpress
  • 潮牌衣服网站建设可行性分析wordpress导航主题模板下载地址
  • 如何确认建设银行网站不是假的网页设计美工培训
  • 制作一个网站要多少钱淮北建投网站
  • 海南网站开发公司宁波网站建设公司怎么报价
  • 深圳网站托管公司莱芜一中贴吧
  • 网站icp备案证明wordpress termux
  • 自己做一个网站需要多少钱专门做中式服装平台的网站
  • 网站里面发消息怎么做超链接如何细分行业 做网站赚钱
  • 做拼多多网站赚钱吗电子项目外包平台
  • 使用二级域名会影响网站收录确定网站主题
  • 网站建设公司前景如何帝国cms响应式网站模板
  • 霸气业务网站源码网站设计师是做什么的
  • 手机网站开发公司wordpress多用户多模板
  • 库尔勒网站建设哪家专业企业建网站费用
  • c2c网站代表网站项目设计书
  • 做网站怎么开后台湖南省网站集约化建设实施方案
  • 网站建设价格方案南昌网站建设搜q.479185700
  • 建一个网络商城的网站素材搜集预算是什么百度关键词推广费用
  • 做网站的开发心得手机版网站如何制作软件
  • 建立网站预算网站建站 用户注册
  • 永顺网站建设wordpress企业主题模板
  • 网站建设活动策划方案推广业务
  • 小说章节收费网站建设界面设计属于什么专业
  • 网站建设专业用语网站建设类的公司名怎么起
  • 小说网站制作什么网站做旅行计划
  • 旅游网站建设普通论文wordpress 过滤插件