Go语言中文网 为您找到相关结果 30

go语言中椭圆曲线加密算法的使用

椭圆曲线加密算法,使用golang的实现! 最近在看一些关于比特币的东西,里边有个椭圆曲线加密算法,查了下,感觉很不错! 与经典的RSA,DSA等公钥密码体制相比,椭圆密码体制有以下优点: 1.安全性高:有研究表示160位的椭圆密钥与1024位的RSA密钥安全性相同。 2.处理速度快:在私钥的加密解密速度上,ecc算法比RSA、DSA速度更快。 3.存储空间占用小。 4.带宽要求低. 椭圆曲线密码体制是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。解椭圆曲线上的离散对数问题的最好算法是Pollard rho方法,其时间复杂度为,是完全指数阶的。其中n为等式(2)中m的二进制表示的位数。当n=234, 约为2117,需要1.6x1023 MIPS 年的时间。而我们熟知的RSA所利...阅读全文

博文 2016-10-09 07:00:05 IrvinYoung

Go与Android的CRC32/Adler32算法使用

Packet在网络传输中必须要考虑万一数据损坏的情况,CRC32与Adler32都是最常用的算法。 Go与Android都内置好了这两种算法的实现,直接使用就好。 Go的调用方式如下: // 校验算法(ADLER32/CRC32)例子 //author: Xiong Chuan Liang //date: 2015-4-12 package main import ( "fmt" "hash/adler32" "hash/crc32" ) var ADLER32 int = 0 var CRC32 int = 1 func main() { for _, v := range []string{"aaaaaaaaaa", "3333sdfsdffsdffsd", "234esrewr2343...阅读全文

博文 2015-06-18 09:09:22 xcltapestry

Go语言 序列化反序列化二进制包

包的定义格式是长度,校验码和json内容 package main import ( "bytes" "encoding/binary" "encoding/json" "fmt" "hash/crc32" "io" "net" "os" ) type Register struct { ACTION int32 SID int32 } type Packet struct { length uint32 crc32 uint32 info string } func (p Packet) Encode() []byte { buf2 := new(bytes.Buffer) var length int = len([]byte(p.info)) err := binary.Write(b...阅读全文

博文 2015-06-17 23:02:37 body100123

关于实现CRC16校验算法的两个函数

之前在2017年2月份发布过一个主题,也是关于CRC16的,现在我直接把函数写出来,希望能帮到有需要的朋友。对于在线监测设备数据传输标准来说,CRC16校验算法有基于通用modbus协议的,有基于环保局HJT-212协议的,以下两个函数算出来的结果都已通过现场数据包验证。 //通用modbus CRC校验算法 func modbusCRC(dataString string) string { crc := 0xFFFF length := len(dataString) for i := 0; i < length; i++ { //通用modbus取寄存器的低8位参与异或运算 crc = ((crc ...阅读全文

用Golang编写的网际校验和算法

网际校验和算法适用于IP、TCP、UDP、ICMP等协议的校验。 func CheckSum(data []byte) uint16 { var ( sum uint32 length int = len(data) index int ) //以每16位为单位进行求和,直到所有的字节全部求完或者只剩下一个8位字节(如果剩余一个8位字节说明字节数为奇数个) for length > 1 { sum += uint32(data[index])<<8 + uint32(data[index+1]) index += 2 length -= 2 } //如果字节数为奇数个,要加上最后剩下的那个8位字节 if length > 0 { sum += uint32(data[index]) } //...阅读全文

博文 2015-06-23 18:06:14 u011774512

gf框架之gvalid - 强大灵活的数据校验/表单校验模块

gf提供了非常强大易用的数据校验功能,通过gvalid包提供,封装了40种常用的校验规则,支持单数据多规则校验、多数据多规则批量校验、自定义错误信息、自定义正则校验等特性。由于gf是模块化、低耦合设计,gvalid包也可以在项目中单独引入使用。 使用方式: ```go import "gitee.com/johng/gf/g/util/gvalid" ``` ### 校验规则 40种常用的校验规则: required 格式:required 说明:必需参数 required-if 格式:required-if:field,value,... 说明:必需参数(当任意所给定字段值与所给值相等时,即:当field字段的值为value时,当前验证字段为必须参数) required-unless 格式...阅读全文

golang微信公众平台支付错误 chooseWxPay:fail

上次的的血泪教训是4个小时,这次是2天,当时的情况是这样的: config ok,各提起支付的参数获取正常,在微信支付接口签名校验工具的校对结果完全一致,但就是报 chooseWxPay:fail,同事的ios手机上报参数错误,但是校验工具告诉我没错。 翻遍了google前6页的所有文章,有说支付目录不对的,有说timeStamp大小写的。。。我把所有可能不可能的全都试了一遍,依然 chooseWxPay:fail。 在即将崩溃的情况下(排错已经超过1天半),我烦躁的向golang群求助,已经不抱任何希望,群里的混蛋们建议我做好离职准备。 呵,愚蠢的地球人。。。。接着我突然发现这个"="号好可爱,之前我是这么写的 而正确写法是"prepay_id="+xxxxxx 感谢 独赏专精 真的真的很...阅读全文

博文 2016-09-16 01:00:04 u012210379

Go语言:MD5加密

Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New()和Sum()函数。 package main import ( "crypto/md5" "encoding/hex" "fmt" ) func main() { data := []byte("Mdroid.cn") md5Ctx := md5.New() md5Ctx.Write(data) cipherStr := md5Ctx.Sum(nil) fmt.Println(cipherStr) fmt.Printf("%x\n", md5.Sum(data)) fmt.Printf("%x\n", cipherStr) fmt.Println(hex.EncodeToString...阅读全文

博文 2017-08-27 16:34:54 Mdroid

Golang版的CRC16校验(查表法)

用go仿写了一个CRC16校验方法 var ( aucCRCHi = []byte{ 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0...阅读全文

博文 2017-12-14 08:06:00 iuoui

深夜撸了一个校验 JSON 内容的工具,解决 golang API 调用请求内容校验的麻烦事

API 经常都是用 JSON 来传递参数的,golang 里 unmarshal 之后总要自己做各种参数校验,好烦,尤其是 json 很长的时候,所以用 reflect 撸了个参数自动校验的东东,请大家多指教,提意见~ https://github.com/matthewgao/gojsonvalidato...阅读全文

zero——Go实现轻量级的Tcp服务器

zero是我用Go实现的一个非常轻量的Socket服务器,可用于快速制作游戏Demo,整个项目不超过500行代码。提供心跳检测,会话管理功能。 接收发送数据使用二进制数据流的方式,可以非常方便的配合Protobuf使用。 Message消息结构 消息结构定义在message.go中,收发消息的编码和解码操作在codec.go中处理。消息结构定义如下: type Message struct { msgSize int32 // 消息长度 msgID int32 // 消息ID data []byte // 消息数据 checksum uint32 // 校验码 adler32算法 } Session会话 每个连接对应一个Session对象,在连接建立的时候创建,并在断开连接的时候删除。 每个...阅读全文

博文 2018-01-15 17:53:34 shy0218

用Go校验下载文件之SHA256

用GO校验下载文件之SHA256 原来对计算机和网络使用安全这块不够重视,用了N多年盗版的操作系统和办公软件,为了破解使用过各种激活软件,也安装使用过很多别人破解过的软件;网络下载的文件从不校验。慢慢地,自己越来越谨慎,现在只使用正版的Windows操作系统,或者开源的Linux操作系统,开源的办公软件。。。,总之一句话,来路不明的软件尽量不用,或者在虚拟机上使用。从各种官方网络下载的文件,如果提供了校验码,一定要对文件进行校验。 从现在开始,从go开始,用go实现sha256来校验golang官方下载的go安装文件。go的crypto包提供了很多安全相关的算法,实现文件sha256校验是非常简单的,下面直接上代码。 package main import ( "crypto/sha256"...阅读全文

博文 2017-10-17 16:00:01 majianguo

go 字符串连接 和 MD5加密

go 字符串连接有多种方法,buf 缓冲区的方法执行速度较快,该方法需要包含的包是:【byte】 go MD5加密方法,这里直接对一串字符串计算MD5。其中,通过md5.New()初始化一个MD5对象,其实它是一个hash.Hash对象。函数原型为 func New() hash.Hash 。 该对象实现了hash.Hash的Sum接口:计算出校验和。其函数原型 为 func Sum(data []byte) [Size]byte 是对hash.Hash对象内部存储的内容进行校验和计算,然后将其追加到data的后面形成一个新的byte切片,因此通常的使用方法就是将data置为nil。 该方法返回一个Size大小的byte数组,对于MD5来说就是一个128bit的16字节byte数组。这里通过...阅读全文

博文 2016-10-15 04:00:05 ssd7sql

gf框架之gvalid – 强大灵活的数据校验/表单校验模块

gf提供了非常强大易用的数据校验功能,通过gvalid包提供,封装了40种常用的校验规则,支持单数据多规则校验、多数据多规则批量校验、自定义错误信息、自定义正则校验等特性。由于gf是模块化、低耦合设计,gvalid包也可以在项目中单独引入使用。 使用方式: import "gitee.com/johng/gf/g/util/gvalid" 校验规则 40种常用的校验规则: required 格式:required 说明:必需参数 required-if 格式:required-if:field,value,... 说明:必需参数(当任意所给定字段值与所给值相等时,即:当field字段的值为value时,当前验证字段为必须参数) required-unless 格式:required-unle...阅读全文

golang中crypto/sha1包

sha1是安全哈希算法。 const BlockSize = 64 功能说明: SHA1的数据块的字节长度位为64字节。 const Size = 20 功能说明: SHA1的校验和的字节长度为20字节。 package main import ( "fmt" "crypto/sha1" ) func main() { h := sha1.New() h.Write([]byte("hello,sha1")) l := fmt.Sprintf("%x", h.Sum(nil)) fmt.Println(l) ...阅读全文

博文 2018-12-09 17:34:46 laijh

怎么计算网络包的校验和

这是一家公司出的面试题, 对其中接收数据包时的校验和部分的计算不太明白, 怎么计算这部分。 ------------------------------------- 0 4 8 12 +--------+--------+------+=============+ |SEQUENCE|CHECKSUM|LENGTH| DATA | +--------+--------+------+=============+ SEQUENCE 数据包序号(大端序) CHECKSUM (校验和) ...阅读全文

golang校验json数据内容

package main import ( "fmt" "github.com/xeipuuv/gojsonschema" ) func main() { schemaLoader := gojsonschema.NewStringLoader(`{"type": "object","properties":{"a":{"type":"object"}},"required":["a"]}`) // json格式 documentLoader := gojsonschema.NewStringLoader(`{"a":"b"}`) // 待校验的json数据 result, err := gojsonschema.Validate(schemaLoader, documentLoader) ...阅读全文

博文 2019-08-20 22:02:44 杜子龙

golang中crypto/md5包

md5包实现了MD5哈希算法 先介绍这个包内里的内容,然后再给出生成一个md5值,go使用md5比较复杂很多,php的话,就直接md5(值),就生成md5值了,php更加适合用于生产,而不是学习。 常量 const BlockSize = 64 // MD5字节块大小 const Size = 16 // MD5校验和字节数 func Sum(data []byte) [Size]byte 返回数据data的MD5校验和 func New() hash.Hash 返回一个新的使用MD5校验的hash.Hash接口 h := md5.New() h.Write([]byte("123456")) fmt.Println(h.BlockSize()...阅读全文

博文 2018-12-09 14:34:42 laijh

关于Golang的使用

1.Golang 同一package下不同文件方法的调用,方法首字母需大写即可 2.Golang方法参数传递,需要声明变量类型 3.Golang http请求,不校验证书的方法 tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport:tr} client.PostForm(url,info...阅读全文

博文 2017-09-03 16:30:05 xiledada

gweb总结之router

代码由此去 代码结构 .- router包 ├── middleware │ ├── param.go // 参数解析支持 │ ├── readme.md // 文档 │ ├── reqlog.go // 记录请求日志 │ ├── response.go // 响应的相关函数 │ └── safe.go // safe recover功能 └── router.go // 入口和request处理逻辑 整个router与gweb其他模块并不耦合,只会依赖于logger。其中router.go是整个路由的入口的,而middleware提供一些工具函数和简单的封装。 router处理逻辑 router.go 主要做了以下工作: 定义路由,及Controller注册 自定义http.Handler...阅读全文

博文 2018-05-09 11:34:47 yeqown

ICAP: 互换客户端地址协议

什么是ICAP?从以太坊Homestead指南的词汇表中可以看出: Interexchange Client Address Protocol, an IBAN-compatible system for referencing and transacting to client accounts aimed to streamline the process of transferring funds, worry-free between exchanges and, ultimately, making KYC and AML concerns a thing of the past. ICAP 互换客户端地址协议,一种IBAN兼容系统,用于引用和处理客户帐户,旨在简化资金转移流程,在...阅读全文

如何通过MD5反查身份证号?

题目:设计一个身份证查询系统,将身份证号md5 之后存储,输入md5值查询对应的身份证号。 要求:成本低,查询速度快 设计思路: 将所有可能的身份证号做一个简单的统计计算数据量 根据数据量选择存储方式 查询 身份证生成规则: 身份号码是特征组合码,由前十七位数字本体码和最后一位数字校验码组成。排列顺序从左至右依次为六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码: 表示编码对象常住户口所在县(市、旗、区)的行政区划代码。对于新生儿,该地址码为户口登记地行政区划代码。需要没说明的是,随着行政区划的调整,同一个地方进行户口登记的可能存在地址码不一致的情况。行政区划代码按GB/T2260的规定执行。 出生日期码:表示编码对象出生的年、月、日,年、月、日代码之间不用分隔符...阅读全文

博文 2019-08-18 15:04:16 goodspeed

Golang学习笔记之MD5

1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密, 用这种方法加密过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。 2.常用的单向加密算法有哪些呢? 主要有:BASE64、MD5、SHA、HMAC,其中最为常见的就有MD5,BASE64。这里我们主要介绍最常使用的MD5算法。该算法可以用来得到一个128bit的值,既可以作为K-V中的key,也可以对密码进行加密从而确保其在传输中"不可见"。 3.Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New和Sum函数。 函数原型: func Sum(data []byte) [Size]byte 返回数据data的MD5校验和。 初始化一个...阅读全文

博文 2018-12-24 22:34:42 学生黄哲

自定义协议和Golang实现

自定义协议和Golang实现 写在这里一是做一下总结在忘的时候方便查看,二是如果文章有错误请各位大佬喷我哈哈,欢迎指正。如果能帮到别人也挺好的。 协议 所谓协议就是指定一系列规则,这些规则使想要交流的双方或多方可以正常通信交流。如我们说的汉语就是协议,如果不按照汉语规则说话,交流的人就听不懂对方说什么,汉语和英语就是不同的协议,用汉语和只会英语的人交流,人家也听不懂你说啥。在计算机中,入参出参是协议,最简单的服务端rest接口是协议,系统实现一层层的网络协议使计算机可以互相通信。 自定义协议 自定义协议就是在现有协议满足不了我们需求时,在现有协议之上构建的满足我们自己程序的通信需求的协议。目前的操作系统,会把我们应用需要的底层网络协议实现好,这对我们来说是透明的,但是在我们写rest时,是不...阅读全文

博文 2019-08-06 18:32:38 黄淑宁

Go1.13 推出模块镜像和校验和数据库 —— 官方博文

> Module Mirror and Checksum Database Launched 我们很高兴地分享我们的模块 [镜像](https://proxy.golang.org/) ,[索引](https://index.golang.org/) 和 [校验和数据库](https://sum.golang.org/) 现已准备就绪! 对于 [Go 1.13 模块用户](https://golang.org/doc/go1.13#introduction) ,go 命令将默认使用模块镜像和校验和数据库。 有关这些服务的隐私信息,请参阅 [proxy.golang.org/privacy](proxy.golang.org/privacy) ,有关配置详细信息,请参阅 [go 命令文档](h...阅读全文

博文 2019-11-09 17:18:24 polaris

go encoding/json 介绍

由于我一直是一名前端工程师,所以我会在前端的角度将js中的json操作和go中的操作做一个类比方便大家的理解。 将字符串转换为对象 js : JSON.parse(`{"name":"cfl"}`)go : json.Unmarshal jsonStr := `{ "name":"cfl", "age":10, "friend":[{"name":"sx", "age":10 }] }` type User struct { Name string Age int64 Friend []User } var cfl User json.Unmarshal([]byte(jsonStr), &cfl) fmt.Printf("%+v", cfl) 将对象转换为json js: JSON.str...阅读全文

博文 2019-11-17 20:32:42 曹飞龙