RC4加密解密java算法

举报
chenyu 发表于 2021/07/27 01:07:19 2021/07/27
【摘要】 有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个java 版本的RC4加解密算法。 public static String HloveyRC4(String aInput,String aKey) { int[] iS = new int[256]; byte[] iK = new byte[256]; for (in...

有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个java 版本的RC4加解密算法。


  
  1. public static String HloveyRC4(String aInput,String aKey)
  2. {
  3. int[] iS = new int[256];
  4. byte[] iK = new byte[256];
  5. for (int i=0;i<256;i++)
  6. iS[i]=i;
  7. int j = 1;
  8. for (short i= 0;i<256;i++)
  9. {
  10. iK[i]=(byte)aKey.charAt((i % aKey.length()));
  11. }
  12. j=0;
  13. for (int i=0;i<255;i++)
  14. {
  15. j=(j+iS[i]+iK[i]) % 256;
  16. int temp = iS[i];
  17. iS[i]=iS[j];
  18. iS[j]=temp;
  19. }
  20. int i=0;
  21. j=0;
  22. char[] iInputChar = aInput.toCharArray();
  23. char[] iOutputChar = new char[iInputChar.length];
  24. for(short x = 0;x<iInputChar.length;x++)
  25. {
  26. i = (i+1) % 256;
  27. j = (j+iS[i]) % 256;
  28. int temp = iS[i];
  29. iS[i]=iS[j];
  30. iS[j]=temp;
  31. int t = (iS[i]+(iS[j] % 256)) % 256;
  32. int iY = iS[t];
  33. char iCY = (char)iY;
  34. iOutputChar[x] =(char)( iInputChar[x] ^ iCY) ;
  35. }
  36. return new String(iOutputChar);
  37. }



  
  1. public static void main(String[] args) {
  2. String inputStr = "做个好男人";
  3. String key = "abcdefg";
  4. String str = HloveyRC4(inputStr,key);
  5. //打印加密后的字符串
  6. System.out.println(str);
  7. //打印解密后的字符串
  8. System.out.println(HloveyRC4(str,key));
  9. }


文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/50803162

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。