[Golang] RC4加解密

@[toc]

前言

拿去直接用,直接 Ctrl+C/V

代码

工具类

go 复制代码
package utils

import (
    "crypto/rc4"
    "encoding/base64"
)

// 加密
func EncryptionRc4(k, query string) string {
    key := []byte(k)
    plaintext := []byte(query)
    // encryption
    ciphertext := make([]byte, len(plaintext))
    cipher1, _ := rc4.NewCipher(key)
    cipher1.XORKeyStream(ciphertext, plaintext)
    return base64.StdEncoding.EncodeToString(ciphertext)
}

// 解密
func DecryptionRc4(k, query string) string {
    param, err := base64.StdEncoding.DecodeString(query)
    if err != nil {
        return ""
    }
    key := []byte(k)
    ciphertext := param
    plaintextDec := make([]byte, len(ciphertext))
    cipher2, _ := rc4.NewCipher(key)
    cipher2.XORKeyStream(plaintextDec, ciphertext)
    return string(plaintextDec)
}

测试类

go 复制代码
func TestRc4(t *testing.T) {
    // 密钥 & 待加密字符串
    rc4 := utils.EncryptionRc4("javaPub_api_key", "我要被加密啦,好害怕!!!")
    fmt.Println("这是加密后的👇:")
    fmt.Println(rc4)
    decryptionRc4 := utils.DecryptionRc4("javaPub_api_key", rc4)
    fmt.Println("这是解密后的👇:")
    fmt.Println(decryptionRc4)
}

祝:工作顺利,得心应手。我是 JavaPub。


本文由博客一文多发平台 OpenWrite 发布!

相关推荐
晴子呀2 分钟前
Spring底层原理大致脉络
java·后端·spring
只吹45°风9 分钟前
Java-ArrayList和LinkedList区别
java·arraylist·linkedlist·区别
阿华的代码王国16 分钟前
【JavaEE】多线程编程引入——认识Thread类
java·开发语言·数据结构·mysql·java-ee
黑蛋同志17 分钟前
array和linked list的区别
java
andrew_121923 分钟前
腾讯 IEG 游戏前沿技术 一面复盘
java·redis·sql·面试
寻求出路的程序媛30 分钟前
JVM —— 类加载器的分类,双亲委派机制
java·jvm·面试
这孩子叫逆32 分钟前
35. MyBatis中的缓存失效机制是如何工作的?
java·spring·mybatis
骆晨学长33 分钟前
基于SpringBoot的校园失物招领系统
java·spring boot
汇匠源33 分钟前
零工市场小程序:保障灵活就业
java·小程序·零工市场
计算机编程-吉哥36 分钟前
计算机毕业设计 二手图书交易系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
java·spring boot·毕业设计·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·二手图书交易系统