总结:

1. RC4加密和解密公用一个函数,即 XORKeyStream()

2. 加密和解密不能用同一个Cipher对象,必须重新生成一个,否则失败

3. XORKeyStream()的两个参数,可以是同一个对象,即覆盖式的加密/解密

实验如下图

代码如下

package main
import ("crypto/rc4""fmt"
)
func main() {// 密钥key := []byte("abcdefg")// 要加密的源数据str := []byte("this is my test!")// 加密方式1:加密/解密后的数据单独存放{// 加密操作dest1 := make([]byte, len(str))fmt.Printf("方法1加密前:%s \n", str)cipher1, _ := rc4.NewCipher(key)cipher1.XORKeyStream(dest1, str)fmt.Printf("方法1加密后:%s \n", dest1)// 解密操作dest2 := make([]byte, len(dest1))cipher2, _ := rc4.NewCipher(key) // 切记:这里不能重用cipher1,必须重新生成新的cipher2.XORKeyStream(dest2, dest1)fmt.Printf("方法1解密后:%s \n\n", dest2)}// 加密方式2:加密后的数据直接存放在源数据那里,不需额外申请空间{// 加密操作fmt.Printf("方法2加密前:%s \n", str)cipher1, _ := rc4.NewCipher(key)cipher1.XORKeyStream(str, str) // 加密后的数据直接覆盖到str中fmt.Printf("方法2加密后:%s \n", str)// 解密操作cipher2, _ := rc4.NewCipher(key)cipher2.XORKeyStream(str, str) // 解密后的数据直接覆盖到str中fmt.Printf("方法2解密后:%s \n\n", str)}
}

go RC4加密解密相关推荐

  1. python 加密解密 rc4_python实现rc4加密解密,base64输出

    这里将告诉您python实现rc4加密解密,base64输出,具体实现方法:from Crypto.Cipher import ARC4 as rc4cipher import base64 def ...

  2. RC4加密解密算法原理及实现对文件的加解密

    本文简单实现了RC4算法对于文件的加解密,并已经验证成功.同时实现了对RC4算法加解密较大文件的测速 RC4加密解密算法的原理: 首先,通过我的理解,RC4算法所依赖的最根本原理是:对明文使用同一个密 ...

  3. RC4加密解密算法123

           RC4是一种对称密码算法,它属于对称密码算法中的序列密码(streamcipher,也称为流密码),它是可变密钥长度,面向字节操作的流密码. RC4是流密码streamcipher中的一 ...

  4. java rc4_java实现的RC4加密解密算法示例

    本文实例讲述了java实现的RC4加密解密算法.分享给大家供大家参考,具体如下: 有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个Java 版本的RC4加解密算法. publi ...

  5. java实现rc4密码_java实现RC4加密解密的实例教程

    这篇文章主要介绍了java实现的RC4加密解密算法,结合具体实例形式分析了java RC4加密解密算法的实现与使用技巧,需要的朋友可以参考下 本文实例讲述了java实现的RC4加密解密算法.分享给大家 ...

  6. RC4加密解密java算法

    有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个java 版本的RC4加解密算法. public static String HloveyRC4(String aInput,S ...

  7. rc4加密算法 php,php 实现RC4加密解密

    RC4算法 RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇.RC4算法是一种在电子信息领域加密的技术手段,用于无线通信网络,是一种电 ...

  8. 基于JAVA的RC4加密解密算法循环实现

    RC4算法是一种对称加密算法,所谓对称加密,就是加密和解密的过程是一样的,加密和解密均采用同一把密钥.RC4算法的特点是算法简单,执行速度快安全性比较高并且密钥长度是可变的,可变范围为1-256字节( ...

  9. php怎样rc4加密,php 实现RC4加密解密

    RC4算法 RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇.RC4算法是一种在电子信息领域加密的技术手段,用于无线通信网络,是一种电 ...

最新文章

  1. 链接2: excel中的截取文子串的功能------left,mid以及right函数使用
  2. 周伯文对话斯坦福教授曼宁:人机对话智能新进展需要新“图灵测试”
  3. Python知识点笔记-列表list、元组tuple和dict类型
  4. 挖掘机燃料_2020广东挖掘机工程机械出租公司合作共赢
  5. MySQL 在 Mac 环境下的安装
  6. PHP笔记-用户登录权限拦截说明
  7. 2021年最值得推荐的报表工具,无代码轻松实现可视化开发
  8. 基于HTML5的网络拓扑图 - 设备状态面板
  9. paip.支付宝自动反退款器
  10. java版简易计算器,java 简易计算器
  11. php iis 重启服务,重新启动IIS即可生效
  12. java 美元符号_$ -----JavaScript 中美元符号 $ 的作用
  13. OAuth2 oauth_client_details表字段的详细说明
  14. springsecurity与gateway网关整合配置
  15. python 同步记事本_如何使用Python同步文件夹
  16. android 打包报错 Execution failed for task ‘:app:lintVitalRelease‘.
  17. 在线编辑、在线预览、在线转换,基于wps.js + java + react / vue,无需任何插件,零安装
  18. DDS的verilog 实现个人总结
  19. nginx中配置root和alias的区别
  20. Latex、如何将word中的表格转换为Latex代码

热门文章

  1. C#基础解析之Ⅲ 【循环结构】
  2. java对字符处理(一)--对HTML中字符转换
  3. SPOJ - SUBLEX Lexicographical Substring Search(后缀自动机)
  4. POJ - 3683 Priest John's Busiest Day(2-SAT+路径打印)
  5. UVA12107Digit Puzzle数字字谜(迭代加深搜索)
  6. 0004-Median of Two Sorted Arrays(寻找两个正序数组的中位数)
  7. Collecting package metadata (current_repodata.json): done Solving environment: failed with repodata
  8. 高德地图轨迹PHP,轨迹回放-点标记-示例中心-JS API 示例 | 高德地图API
  9. java中日期计算2月份_计算两日期间2月29日总数的Java程序
  10. [转]I,P,B帧和PTS,DTS的关系