package main

import (
"bytes"
"encoding/hex"
"fmt"
"math/big"
) var base58Alphabets = []byte("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz") func main() {
// testReverse() str := "a"
_, res := Base58Encode([]byte(str))
fmt.Println("res=", res)
resByte, resStr := Base58Decode([]byte(res))
fmt.Println("resByte=", resByte)
fmt.Println("resStr=", resStr) } // Base58Encode 编码
func Base58Encode(input []byte) ([]byte, string) {
x := big.NewInt().SetBytes(input)
fmt.Println("x=", x)
base := big.NewInt()
zero := big.NewInt()
mod := &big.Int{}
var result []byte
// 被除数/除数=商……余数
fmt.Println("开始循环-------")
for x.Cmp(zero) != {
x.DivMod(x, base, mod)
fmt.Println("mod=", mod)
fmt.Println("x=", x)
result = append(result, base58Alphabets[mod.Int64()])
fmt.Println("一次循环结束-------")
}
ReverseBytes(result)
return result, string(result)
} // Base58Decode 解码
func Base58Decode(input []byte) ([]byte, string) {
result := big.NewInt()
for _, b := range input {
charIndex := bytes.IndexByte(base58Alphabets, b)
result.Mul(result, big.NewInt())
result.Add(result, big.NewInt(int64(charIndex)))
}
decoded := result.Bytes()
if input[] == base58Alphabets[] {
decoded = append([]byte{0x00}, decoded...)
}
return decoded, string(decoded)
} func testReverse() {
str := ""
// data := []byte(str)
data, _ := hex.DecodeString(str)
fmt.Println(data)
ReverseBytes(data)
fmt.Println(fmt.Sprintf("%v", data))
} // ReverseBytes 翻转字节
func ReverseBytes(data []byte) {
for i, j := , len(data)-; i < j; i, j = i+, j- {
data[i], data[j] = data[j], data[i]
}
}

go语言 base58编码解码的更多相关文章

  1. go语言 base64编码解码

    package main import ( "encoding/base64" "fmt" ) func main() { str := "Man&q ...

  2. C语言实现Base64编码/解码

    Bse64是一种以64个可打印字符对二进制数据进行编码的编码算法.base64在对数据进行编码时以三个8位字符型数据为一组,取这三个字符型数据的ASCII码,然后以6位为一组组成4个新的数据,这4个新 ...

  3. 如何使用 PHP 语言来编码和解码 JSON 对象

    PHP JSON 本章节我们将为大家介绍如何使用 PHP 语言来编码和解码 JSON 对象. 环境配置 在 php5.2.0 及以上版本已经内置 JSON 扩展. JSON 函数 函数 描述 json ...

  4. 理解netty对protocol buffers的编码解码

    一,netty+protocol buffers简要说明 Netty是业界最流行的NIO框架之一优点:1)API使用简单,开发门槛低:2)功能强大,预置了多种编解码功能,支持多种主流协议:3)定制能力 ...

  5. 字符集&各种编码&编码解码

    要理解乱码问题,首先需要理解几个概念:字符集.编码.编码规则.乱码 1. 字符集: 字符(Character)是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.字符集(Charact ...

  6. Py3编码解码

    Py3编码解码   写的不好请谅解,有问题欢迎指出.   python2.x中的解决方案(图片来源于网络) #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  7. 比特币中的Base58 编码

    base58和base64一样是一种二进制转可视字符串的算法,主要用来转换大整数值.区别是,转换出来的字符串,去除了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母 ...

  8. Go语言安全编码规范-翻译(分享转发)

    Go语言安全编码规范-翻译 本文翻译原文由:blood_zer0.Lingfighting完成 如果翻译的有问题:联系我(Lzero2012).匆忙翻译肯定会有很多错误,欢迎大家一起讨论Go语言安全能 ...

  9. 编码解码--url编码解码

    url编码解码,又叫百分号编码,是统一资源定位(URL)编码方式.URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通 ...

随机推荐

  1. windows下python3使用pip安装scrapy提示安装失败

    我的环境:     python3.6,     win10,      原因:不能成功安装twisted,因为twisted与高版本的python有兼容问题. 解决:1,先下载twisted二进制文 ...

  2. IO流(字节流,字符流)

    一,概述 IO流(input output):用来处理设备之间的数据. Java对数据的操作是通过流的对象. Java用于操作流的对象都在IO包中. 流是一组有顺序的,有起点和终点的字节集合,是对数据 ...

  3. Python3标准库:pprint美观打印数据结构

    1. pprint美观打印数据结构 pprint模块包含一个“美观打印机”,用于生成数据结构的一个美观的视图.格式化工具会生成数据结构的一些表示,不仅能够由解释器正确地解析,还便于人阅读.输出会尽可能 ...

  4. 配置 Apache James 邮件服务器以使用加密邮件通讯协议

    可先参照: 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8)https://www.cnblogs.com ...

  5. WebStorm2018破解教程

    话不多说,直接上教程: 1,下载压缩包,并解压缩,下载地址如下: 链接:谁点谁知道提取码:9am8 2,双击压缩包中的WebStorm-2018.2.1.exe文件,进行安装. 3,安装完成之后,将压 ...

  6. 消息驱动微服务:Spring Cloud Stream

    最近在学习Spring Cloud的知识,现将消息驱动微服务:Spring Cloud Stream 的相关知识笔记整理如下.[采用 oneNote格式排版]

  7. 如何使用vscode-代码编辑器工具

    vscode-代码编辑器的全称是“visual studio code”,主要是一个运行于 Mac OS X.Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器 ...

  8. idea中MavenWeb项目不能创建Servlet的解决办法

    问题 学习完maven后,用maven创建了一个web项目,然后在这个web项目中创建了一个java文件夹并标记这个目录为源码根目录,当我准备创建一个Servlet的时候发现没有,如下图 解决办法 1 ...

  9. 【pycharm基本操作】项目创建、切换、运行、字体颜色设置,常见包的安装步骤

    创建新项目 退出项目 怎样区别虚拟环境和系统环境? 虚拟环境和系统环境切换:进入项目切换解释器 切换项目 创建python目录和文件 代码运行方式一: 还可以这样执行代码方式二: 文件的剪切.复制.删 ...

  10. Mac 配置本地SSL

    1,执行: && openssl req -new -sha256 -x509 -days -key server.key -out server.crt 2,生成过程中,其它可随便填 ...