- 博客(21)
- 收藏
- 关注
原创 Go语言的序列化与反序列化(gob)
encoding/gob包实现了高效的序列化,特别是数据结构较复杂的,结构体、数组和切片都被支持。实现代码如下://定义一个结构体type Student struct { Name string Age uint8 Address string}func main(){ //序列化 s1:=Student{"张三",18,"江苏省"} var buffer bytes.B...
2018-11-10 11:43:41
4542
原创 Go语言的序列化与反序列化(binary)
encoding/binary包实现了简单的数字(固定长度的数字类型或者只包含定长值的结构体或数组)与字节系列的转换以及变长值的编解码。func Write(w io.Writer, order ByteOrder, data interface{}) error序列化,将数据转换成byte字节流,order指定字节序func Read(r io.Reader, order ByteOrde...
2018-11-10 11:06:55
7973
原创 Go语言实现ECC数字签名
Go语言实现ECC数字签名椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为 ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学。在用于数字签名时,发送方通常先对消息生成散列值,再利用私钥对散列值进行签名,接收方收到消息及签名时,也先对消息生成散列值(与发送方使用同种单向散列函数),利用发送方发的公钥、签名以及自己生成的散列值进行签名验证。实现代码如下:...
2018-11-06 14:42:38
3375
原创 Go语言实现RSA数字签名
Go语言实现RSA数字签名RSA是一种非对称加密算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman 的姓氏的首字母组成的(Rivest-Shamir-Adleman ),可用于数据加密和数字签名。在用于数字签名时,发送方通常先对消息生成散列值,再利用私钥对散列值进行签名,接收方收到消息及签名时,也先对消息生成散列值(与发送方使用同种单向散列...
2018-11-06 11:50:43
3186
1
原创 Go语言实现SHA256生成散列值
Go语言实现SHA256生成散列值SHA256是一种常用的单向散列函数(哈希函数),能够生成256比特的散列值.实现代码如下:import ( "crypto/sha256" "encoding/hex" "fmt")//SHA256生成哈希值func GetSHA256HashCode(message []byte)string{ //创建一个基于SHA256算法的hash..
2018-11-06 11:20:59
9063
1
原创 Go语言实现MD5生成散列值
Go语言实现MD5生成散列值MD5是一种常用的单向散列函数(哈希函数),能够生成128比特的散列值,但是目前它的强抗碰撞性已经被攻破,已经能够产生具备相同散列值的两条不同的消息,所以MD5已经不安全了。实现代码如下:import ( "crypto/md5" "encoding/hex" "fmt")//MD5生成哈希值func Ge
2018-11-06 10:31:52
1022
原创 Go语言实现RSA加密解密
Go语言实现RSA加密解密RSA是一种非对称加密算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman 的姓氏的首字母组成的(Rivest-Shamir-Adleman ),可用于数据加密和数字签名。实现代码如下://生成RSA私钥和公钥,保存到文件中func GenerateRSAKey(bits int){ //GenerateKey...
2018-11-05 21:55:19
9234
原创 Go语言实现AES加密算法(CTR模式)
Go语言实现AES加密算法(CTR模式)AES是目前比较流行的对称加密算法,是一种分组密码算法,AES的分组长度为128比特(16字节),而密钥长度可以是128比特、192比特或256比特。CTR模式(计数器模式)是常用的一种分组密码的模式。(点击查看分组密码及CTR模式概述)实现代码如下://AEC加密和解密(CRT模式)func AEC_CRT_Crypt(text []byte,k...
2018-11-05 21:40:52
3297
原创 Go语言实现AES加密算法(CBC模式)
Go语言实现AES算法(CBC模式)AES是目前比较流行的对称加密算法,是一种分组密码算法,AES的分组长度为128比特(16字节),而密钥长度可以是128比特、192比特或256比特。CBC模式(密码分组链接模式)是常用的一种分组密码的模式。(点击查看分组密码及CBC模式概述)实现代码如下://对明文进行填充func Padding(plainText []byte,blockSize...
2018-11-05 21:33:54
7547
原创 Go语言实现三重DES加密算法(CBC模式)
Go语言实现三重DES算法(CBC模式)由于DES已经可以被暴力破解了,三重DES就是为了增加DES的强度,实现原理就是将DES重复三次,通常缩写为3DES。3DES的密钥长度为8byte*3=24byte。3DES的加密机制为:加密->解密->加密3DES的解密机制为:解密->加密->解密CBC模式(密码分组链接模式)是常用的一种分组密码的模式。(点击查看分组密码...
2018-11-05 21:16:01
1667
原创 Go语言实现DEC加密算法(CBC模式)
Go语言实现DEC加密算法(CBC模式)DES是一种将64比特的明文加密成64比特的密文的对称加密算法,它的密钥长度是56比特,但每隔7比特会设置一个用于错误检查的比特,所以DES实质上其密钥长度是56比特。DES是一种分组密码算法,CBC模式(密码分组链接模式)是一种分组密码的模式。实现代码如下://对明文进行填充func Padding(plainText []byte,blockS...
2018-11-01 23:04:26
1215
原创 简述分组密码的五种常用模式
简述分组密码的五种常用模式分组密码是每次只能处理特定长度的一块数据的算法,每块都是一个分组,分组的比特数就称为分组长度,但是当加密的内容超过分组密码的分组长度时,就要对分组密码算法进行迭代,迭代的方法称为分组密码的模式。例如:DES和AES都是分组密码算法,DES和三重DES的分组长度都是64比特,AES的分组长度可以是128比特、192比特或256比特。分组密码的模式主要有以下五种:EC...
2018-11-01 22:48:24
16093
原创 Go实现查询最后一个单词的长度(leetcode.58)
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: “Hello World”输出: 5实现代码如下:func lengthOfLastWord(s string) int { if len(strings.Trim(s," "))==0{ ret...
2018-10-31 00:13:01
193
原创 Go实现杨辉三角形(leetcode.118)
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]实现代码如下:func generate(numRows int) [][]int { if numRows==0{ return nil }...
2018-10-30 21:53:28
896
原创 Go实现回文数(leetcode.9)
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。第一种方法代码如...
2018-10-30 09:04:06
933
原创 Go实现合并两个有序列表(leetcode.21)
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4代码如下/** * Definition f
2018-10-30 00:47:23
1580
原创 Go语言实现二叉树(BinaryTree)
go语言实现二叉树(BinaryTree)        使用go语言实现了二叉树的一些基本功能,存储节点数据的类型为int。(有什么建议或者不懂的地方可以留言)实现代
2018-10-29 21:06:20
812
原创 Go语言实现单向链表
go语言实现单向链表        使用go语言实现了单向链表的一些基本功能,节点的数据类型为interfa
2018-10-29 20:31:20
578
原创 Go实现两数相加(leetcode.2)
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&
2018-10-28 11:55:41
982
原创 Golang操作Redis数据库
golang操作Redis数据库下载redis库输入命令:go get github.com/gomodule/redigo/redis,会下载到gopath目录下连接redis数据库函数Dial(network, address string)(conn,err)例如: conn,err:=redis.Dial("tcp","192.168.1.1:6379&
2018-10-28 11:37:33
1397
原创 Redis整合-快速入门
Redis整合-快速入门Redis简介:Redis持久化RDB持久化:AOF持久化:Redis数据结构string类型hash类型欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的Ka...
2018-10-28 11:04:50
350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人