开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 0

jlcoding/GoMessageCode

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
GoMessageCode
/
main.go
GoMessageCode
/
main.go
main.go 3.18 KB
一键复制 编辑 原始数据 按行查看 历史
jlcoding 提交于 2015年12月09日 15:31 +08:00 . "first"
package main
import (
_ "bytes"
_ "container/list"
_ "encoding/binary"
"encoding/hex"
"fmt"
"github.com/astaxie/beego"
_ "math"
"strconv"
"strings"
)
type MainController struct {
beego.Controller
}
func (this *MainController) Encode() {
text := this.GetString("text")
this.Ctx.WriteString(encodeText(text))
}
func (this *MainController) Decode() {
text := this.GetString("text")
this.Ctx.WriteString(decodeText(text))
}
func main() {
// beego.SetStaticPath("/views", "views")
// beego.SetStaticPath("/", "views/index.html")
// beego.AutoRouter(&MainController{})
// beego.Run()
bData := encodeText("我去你妈的b")
fmt.Println(bData)
fmt.Println(decodeText(bData))
}
//加密
func encodeText(text string) (resultStr string) {
strs := strings.Split(text, "") //分割字符串
for _, element := range strs {
str := []byte(element)
hexStr := hex.EncodeToString(str)
length := len(hexStr)
lengthB := strconv.FormatInt(int64(length), 2)
bLen := len(lengthB)
if bLen < 3 {
for i := 0; i < (3 - bLen); i++ {
lengthB = "0" + lengthB
}
}
resultStr += lengthB
hexChars := strings.Split(hexStr, "") //分割字符串
for _, element := range hexChars {
resultStr += hexToBinary(element)
}
}
return resultStr
}
//十进制转换成十六进制
func numToChar(num int64) (result string) {
switch num {
case 10:
result = "A"
case 11:
result = "B"
case 12:
result = "C"
case 13:
result = "D"
case 14:
result = "E"
case 15:
result = "F"
default:
result = strconv.Itoa(int(num))
}
return result
}
//十六进制转换成十进制
func charToNum(char string) (result int64) {
char = strings.ToUpper(char)
var num string
switch char {
case "A":
num = "10"
case "B":
num = "11"
case "C":
num = "12"
case "D":
num = "13"
case "E":
num = "14"
case "F":
num = "15"
default:
num = char
}
result, _ = strconv.ParseInt(num, 10, 64)
return result
}
//十六进制转换成二进制
func hexToBinary(text string) (data string) {
strs := strings.Split(text, "")
for _, element := range strs {
num := charToNum(element)
bData := strconv.FormatInt(num, 2)
length := len(bData)
if length < 4 {
//不够四位就补全四位
for i := 0; i < (4 - length); i++ {
bData = "0" + bData
}
}
data += bData
}
return data
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
//解密
func decodeText(text string) string {
var pointer int
var result string
for pointer < len(text) {
lengthB := SubString(text, pointer, 3)
pointer += 3
length, _ := strconv.ParseInt(lengthB, 2, 64)
var tempStr string
for i := 0; i < int(length); i++ {
charB := SubString(text, pointer, 4)
pointer += 4
char, _ := strconv.ParseInt(charB, 2, 0)
tempStr = tempStr + numToChar(char)
}
tenStr, _ := hex.DecodeString(tempStr)
result += string(tenStr)
}
return result
}
//获取子字符串
func SubString(str string, begin, length int) (substr string) {
// 将字符串的转换成[]rune
rs := []rune(str)
lth := len(rs)
// 简单的越界判断
if begin < 0 {
begin = 0
}
if begin >= lth {
begin = lth
}
end := begin + length
if end > lth {
end = lth
}
// 返回子串
return string(rs[begin:end])
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

转二进制~之前的Java版不见了,做个Go版玩玩
暂无标签
Apache-2.0
使用 Apache-2.0 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/msgcode/GoMessageCode.git
git@gitee.com:msgcode/GoMessageCode.git
msgcode
GoMessageCode
GoMessageCode
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /