上篇了解了《非对称加密》后 今天我来继续了解下加密技术中对称加密。 对称加密 对称加密是最传统的加密方式,比上非对称加密,缺少安全性,可是它依然是用的比較多的加密方法。 对称加密採用单密钥加密方式,不论是加密还是解密都是用同一个密钥,即“一把钥匙开一把锁”。 对称加密的优点在于操作简单、管理方便、速度快。它的缺点在于密钥在 网络传输中easy被窃听,每一个密钥仅仅能应用一次
异或加密是密码学中一种简单的加密算法,常作为更为复杂的加密算法的组成部分。 原理 异或运算:首先异或表示当两个数用二进制表示,进行异或运算时,当前位的两个二进制不同则为1相同则为0。 A ⊕ 0 = A A ⊕ A = 0 A ⊕ B ⊕ B = A 文本的每个字符可以通过与给定的密钥进行按位异或运算来加密。如果要解密,只需要将加密后的结果与密钥再次进行按位异或运算即可。 代码实践 golang
“非对称加密也叫公钥密码: 使用公钥加密, 使用私钥解密” 下面我们来看一看使用公钥密码的通信流程。假设Alice要给Bob发送一条消息,Alice是发送者,Bob是接收者,而窃听者Eve能够窃所到他们之间的通信内容。 在公非对称加密通信中,通信过程是由接收者Bob来启动的。 Bob生成一个包含公钥和私钥的密钥对。 私钥由Bob自行妥善保管。 Bob将自己的公钥发送给Alicea
在web项目中,无状态的token较为通用的是jwt。对他了解了一番之后,发现在普通的web应用中,似乎 也不是那么的好: jwt token 非常的长性能一般 个人认为除了无状态的优势以外,选择它的理由就是它业界通用,对于目前各种授权登录的方式有好处。 想了一圈,还是决定放弃他,自己实现一个自己的token。 我设计的token包含三部分内容: token创建的时间,放在最开头
在对称密码中,由于加密和解密的密钥是相同的,因此必须向接收者配送密钥。用于解密的密钥必须被配送给接收者,这一问题称为密钥配送问题。如果使用非对称加密也可以称为公钥密码,则无需向接收者配送用于解密的密钥,这样就解决了密钥配送问题。可以说非对称加密是密码学历史上最伟大的发明。 非对称加密中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密
概念理解 cypto/des 模式 由于分组密码算法只能加密固定长度的分组,所以当加密的明文超过分组密码的长度时,就需要对分组密码算法进行迭代,而迭代的方法就称为分组密码的模式。模式主要有ECB(电子密码本)、CBC(密码分组链接模式)、CTR(计数器模式)、OFB(输出反馈模式)、CFB(密码反馈模式)五种。下面简单介绍下前两种: ECB(electronic code
var wg sync.WaitGroup func test(num int) { defer wg.Done() for i := 0; i <= 5; i++ { fmt.Printf("协程(%v)第%v条数据\n", num, i) } } func main() { for i := 1; i <= 5; i++ { wg.Add(1) go test(i) }
如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人。 Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据。 以下是我入门的学习笔记。 Go语言的goroutines、信道和死锁 goroutine Go语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻。 loop func
并发和并行都是为了充分利用 CPU 多核计算资源所提出来的概念,相信我们或多或少都对二者的概念有所了解: 并发指的是在同一时间段内,多条指令在 CPU 上同时执行; 并行指的是在同一时刻内,多条指令在 CPU 上同时执行。 并发程序并不要求 CPU 具备多核计算的能力。在同一时间段内,多个线程会被分配一定的执行时间片,在 CPU 上被快速轮换执行。线程执行的时间片时间耗尽或者任务完成了,会被
在 Golang 中,可以使用接口和类型断言来实现多态函数。多个参数的多态函数可以通过将接口类型作为函数参数来实现。 下面是一个例子: ```go type Shape interface { area() float64 } type Rectangle struct { width float64 height float64 } type Circle struct {