go语言 base58编码解码
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编码解码的更多相关文章
- go语言 base64编码解码
package main import ( "encoding/base64" "fmt" ) func main() { str := "Man&q ...
- C语言实现Base64编码/解码
Bse64是一种以64个可打印字符对二进制数据进行编码的编码算法.base64在对数据进行编码时以三个8位字符型数据为一组,取这三个字符型数据的ASCII码,然后以6位为一组组成4个新的数据,这4个新 ...
- 如何使用 PHP 语言来编码和解码 JSON 对象
PHP JSON 本章节我们将为大家介绍如何使用 PHP 语言来编码和解码 JSON 对象. 环境配置 在 php5.2.0 及以上版本已经内置 JSON 扩展. JSON 函数 函数 描述 json ...
- 理解netty对protocol buffers的编码解码
一,netty+protocol buffers简要说明 Netty是业界最流行的NIO框架之一优点:1)API使用简单,开发门槛低:2)功能强大,预置了多种编解码功能,支持多种主流协议:3)定制能力 ...
- 字符集&各种编码&编码解码
要理解乱码问题,首先需要理解几个概念:字符集.编码.编码规则.乱码 1. 字符集: 字符(Character)是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.字符集(Charact ...
- Py3编码解码
Py3编码解码 写的不好请谅解,有问题欢迎指出. python2.x中的解决方案(图片来源于网络) #!/usr/bin/env python # -*- coding: utf-8 -*- ...
- 比特币中的Base58 编码
base58和base64一样是一种二进制转可视字符串的算法,主要用来转换大整数值.区别是,转换出来的字符串,去除了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母 ...
- Go语言安全编码规范-翻译(分享转发)
Go语言安全编码规范-翻译 本文翻译原文由:blood_zer0.Lingfighting完成 如果翻译的有问题:联系我(Lzero2012).匆忙翻译肯定会有很多错误,欢迎大家一起讨论Go语言安全能 ...
- 编码解码--url编码解码
url编码解码,又叫百分号编码,是统一资源定位(URL)编码方式.URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通 ...
随机推荐
- const与指针、引用
const与指针类型 定义一个指针*p: const int* p = NULL; int const* p = NULL; int* const p = NULL; 上面两行定义完全等价,第三行则不 ...
- git系列之---码云gitee 添加SHH公钥
公钥 很多服务器都是需要认证的,SHH 认证是其中的一种:在客户端生成公钥,把生成的公钥添加到服务器,你以后连接服务器的时候就不用每次都输入用户名和密码了:很多git服务器都是用ssh认证方式,你需要 ...
- bitmap+文本生成新的bitmap的实现
注:参数content为生成二维码bitmap的内容,该二维码bitmap在和文本title组合生成一个新的bitmap package info.ecloud.merchant.util; impo ...
- 疫情之下,使用FRP实现内网穿透,远程连接公司电脑进行办公
当前情况下,经常会有需要到公司电脑进行一些操作,比如连接内网OA,数据库或者提交文档.为了减少外出,将使用frp进行内网穿透的方法进行一个说明. 前提条件 1. 一台拥有公网 IP 的设备(如果没有, ...
- AI Web 1.0
kali:192.168.0.103 目标机:192.168.0.105 0X01 端口和目录扫描 打开目标主页没有任何信息 a) 端口扫描 只有一个80端口开启 b) 目录扫描 0x03 查看敏感目 ...
- Badusb 简易制作
Badusb easy_make 0x00 basic knowledge and equip arduino IDE download address: https://www.arduino.cc ...
- Java语言与C++语言区别
最近有点空闲时间,学习了Java语言.教材<Java简明教程>第四版,清华大学出版社.本人以前有C++基础,所以主要总结下两者区别. 一.基本类型和运算 1.布尔常量,true和false ...
- ECMAScript 6基础
ECMAScript 和 JavaScript 是什么关系? 1996 年 11 月,JavaScript 的创造者 Netscape 公司,希望JavaScript能够成为国际标准,将其提交给标准化 ...
- 源码编译安装python2/3版本
1- 源码编译安装python2.7版本 1.1- 下载源码包 wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz 1.2- ...
- 8组 上课啦(Class BUddy Pro)使用体验
下载上课啦app 进入页面显示的是一个第1周的课表,和可以看到本周为第几周,点击周可以调整第几周显示课表 ,课表内容为整周内容,本周内容一目了然.点击右上角可以进入主设置页面,设置页面可以设置静音模式 ...