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. C++ 常用编程--Swap函数有几种写法?

    C++ 常用编程--Swap函数有几种写法? 在说C++模板的方法前,我们先想想C语言里面是怎么做交换的. 举个例子,要将两个int数值交换,是不是想到下面的代码: void swap(int& ...

  2. vscode+php+xdebug Time-out connecting to client (Waited: 200 ms)

    如果php.ini配置没错,且端口无误,那么就可能是配置文件选错了. vscode里面有两个配置文件,一个是 Listen for xdebug ,一个是 Lanuch currently open ...

  3. JS中new的实现原理及重写

    提到new,肯定会和类和实例联系起来,如: function Func() { let x = 100; this.num = x + } let f = new Func(); 上面的代码,我们首先 ...

  4. ​Microchip SPI串行SRAM和NVSRAM器件

    Microchip的SRAM和NVSRAM系列(SPI串行SRAM和NVSRAM设备)提供了一种轻松添加外部RAM的方式,且具有以下特性功能 特性低功耗CMOS技术:4μA最大待机电流 标准4引脚SP ...

  5. ELK学习004:Elasticsearch常规操作

    CRUD 在我们的项目中有日志是一个必不可少的东西,但是日志的检索是一个很麻烦的事情,如每天一个日志,要找到问题就得一个一个找,并不能做到检索功能,这还算好的,如果是分布式的,每个机器都得找一遍,这种 ...

  6. oo第三次作业--jml

    1.首先我们应该了解什么是jml,jml是java modeling language的缩写,是一种为java规格化设计的标识语言,简单来说,就是描述“干什么”的标准语言(跟注释差不多,但是是标准化注 ...

  7. eclipse一直不停building workplace

    找解决方案的时候自己好了 然后又卡在了updating maven project 暂无解

  8. LeetCode 面试题52. 两个链表的第一个公共节点

    题目链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/ 输入两个链表 ...

  9. Java多线程之互斥锁Syncharnized

    public class Bank { private int money; private String name; public Bank(String name, int money) { th ...

  10. Python3标准库:struct二进制数据结构

    1. struct二进制数据结构 struct模块包括一些函数,这些函数可以完成字节串与原生Python数据类型(如数字和字符串)之间的转换. 1.1 函数与Struct类 struct提供了一组处理 ...