map是golang的内置数据类型之一,日常工作中用起来真的是非常方便。可它也有个明显的不足之处,就是经常在并发时需要加读写锁。锁来锁去,不仅对性能有影响,写起来也感觉很烦。标准库sync中有一个Map的数据结构,官方文档上是这么介绍的:概括下就是说sync.Map,类似于map[interface{}]interface{},并且对于并发访问是安全的,不需要再额外加锁。大部分时候,用户应该使用m
转载
2024-05-17 12:42:32
45阅读
调包侠就是本人= =package mainimport ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand
原创
2022-08-10 15:14:19
1386阅读
RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 RSA解决了对称加密的一个不足,比如AES算法加密和解密时使用的是同一个秘钥,因此这个秘钥不能公开,因此对于需要公开秘钥的场合,我们需要在加密和解密过程中
package main
import (
"bufio"
"crypto/sha256"
"database/sql"
"encoding/hex"
"fmt"
"io"
"io/ioutil"
"os"
"strings"
"sync"
"time"
_ "github.com/mattn/go-sqlite3"
)
// 加密字符串
func GetNegati
转载
2024-04-12 20:38:02
40阅读
golang实现md5函数 //md5加密 func Md5(src string) string { m := md5.New() m.Write([]byte(src)) res := hex.EncodeToString(m.Sum(nil)) return res }
原创
2022-08-24 22:18:54
274阅读
锁的介绍与使用1 互斥锁 传统并发程序对共享资源进行访问控制的主要手段,由标准库代码包中sync中的Mutex结构体表示。//Mutex 是互斥锁, 零值是解锁的互斥锁, 首次使用后不得复制互斥锁。
type Mutex struct {
state int32
sema uint32
}sync.Mutex类型只有两个公开的指针方法//Locker表示可以锁定和解锁的对象。
ty
转载
2024-04-22 11:25:56
85阅读
RSA 介绍RSA 由 Ron Rivest, Adi Shamir 和 Lennard Adleman 三位大佬在 1977 年提出的算法。RSA 加密算法是一种非对称机密算法, 对极大整数做因数分解的难度决定了RSA算法的可靠性。公钥与私钥的产生选取两个大的质数: p 和 q计算 n = p * q计算小于 n 并且与 n 互质的整数的个数, 使用欧拉公式可以计算ο(n)=(p−1)∗(q−1
转载
2021-02-02 20:19:31
933阅读
2评论
golang实现sha256加密函数 //Sha256加密 func Sha256(src string) string { m := sha256.New() m.Write([]byte(src)) res := hex.EncodeToString(m.Sum(nil)) return res
原创
2022-08-24 22:19:05
411阅读
文章目录前言解析方式1. 字符串格式(1)公钥(2)私钥2. 证书文件格式(1).pem、.cert、.cer、.crt(2).pkcs12、.pfx、.p123. N,E参数总结 前言加密、解密、签名、验签等操作总少不了对秘钥的处理,秘钥的存储格式决定了解析方式。在golang中关于RSA加密、解密、签名、验签的总结一文中提到的仅是针对的字符串类型的秘钥处理,本文中将对常见的几种RSA秘钥存储
最近听说golang连接orcale比较麻烦,遂决定一探究竟,结果发现还的确有点费事,不过终究还是可以实现的。
使用glang有一段时间了,最开始其实并不太喜欢他的语法,但是后来熟悉之后发现用起来还挺爽的。之前数据库一直使用mysql,连接起来没有什么问题,github上有很多完善的驱动,所以以为连接其他数据库也应该没什么问题
转载
2024-04-30 16:52:09
71阅读
最近在项目中需要在多线程下操作map,查阅资料后发现golang得sync包中有提供一个sync.map可以作为线程安全得map使用,但是最后同时推荐了另一个开源的cmap工具包,性能较sync.map更出色,所以没有使用golang的syanc包的map。在这里对两种map进行一下总结和学习。1.sync.mapgolang中如果在多个routine中使用map,是有可能会发生fatal错误导致
DES DES(Data Encryption)是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称密码(FIPS46-3),一直以来被美国及其他国家的政府和银行等广泛使用。随着计算机的进步,DES已经能够被暴力破解,1997年的DES Challenge I 中用了96天破译密钥,199
原创
2021-09-04 17:20:29
10000+阅读
Golang中的锁锁是一种在并发编程中常用的同步机制,用于管理对共享资源的访问。Golang提供了多种锁类型,可以满足不同的并发编程需求。用途和分类锁的主要作用是保护共享资源,防止多个goroutine同时访问同一个资源,导致数据的不一致性和并发安全问题。Golang提供的锁主要分为两类:互斥锁:sync.Mutex互斥锁是最基本的锁类型,可以用于保护任何类型的共享资源。当一个goroutine获
转载
2024-03-25 12:52:22
65阅读
使用ioutil包进行文件写入// 写入[]byte类型的data到filename文件中,文件权限为permfunc WriteFile(filename string, data []byte, perm os.FileMode) error示例:/**
* @File Name: writefile.go
* @Author:
* @Email:
* @Create Date: 20
转载
2024-04-15 06:25:10
32阅读
Golang对称加密-AES 代码 没啥好说的,直接上代码吧! package encrypt import ( "bytes" "crypto/aes" "crypto/cipher" "encoding/base64" "errors" ) //aes(高级加密标准) //加密秘钥, 长度分别是 ...
转载
2021-07-30 15:27:00
284阅读
2评论
我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战 0. 摘要 在项目开
原创
2022-01-18 13:52:47
356阅读
Golang专家级教程:crypto/rand 库的使用技巧与最佳实践引言:为什么选择 `crypto/rand``crypto/rand` 基本概念与原理1. 加密安全的伪随机数生成器(CSPRNG)2. 操作系统的随机数源3. 应用场景如何使用 `crypto/rand`:基础示例1. 生成随机字节序列2. 生成随机整数进阶使用:`crypto/rand` 在加密与安全领域的应用1. 生成加
前言前面我们为了解决go程同步的问题我们使用了channel, 但是go也提供了传统的同步工具.它们都在go的标准库代码包 sync 和 sync/atomic 中.下面我们来看一下锁的应用.什么是锁呢? 就是某个协程(线程)在访问某个资源时先锁住, 防止其他协程的访问, 等访问完毕解锁后其他协程再来加锁进行访问.这和我们生活中加锁使用公共资源相似, 例如: 公共卫生间.死锁死锁是指两个或者两个以
转载
2024-04-13 17:57:10
54阅读
golang基础-锁1、Golang的锁2、sync.WaitGroup注意事项1.计数器不能设置为负值2.WaitGroup对象不是一个引用类型3、sync.Mutex4、sync.RWMutex 1、Golang的锁Golang中的锁有两种:sync.Mutex和sync.RWMutexsync.Mutex的锁只有一种锁:Lock(),它是绝对锁,同一时间只能有一个锁sync.RWMutex
转载
2024-06-30 00:33:58
0阅读
GolangAES加密解密gopackagemainimport("bytes""crypto/aes""crypto/cipher""encoding/base64""errors""fmt")//加密过程://1、处理数据,对数据进行填充,采用PKCS7(当密钥长度不够时,缺几位补几个几)的方式。//2、对数据进行加密,采用AES加密方法中CBC加密模式//3、对得到的加密数据,进行base6
原创
2022-08-12 22:27:25
1895阅读