RSA算法原理

一、什么是RSA算法

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。

(1)甲方选择某一种加密规则,对信息进行加密;
(2)乙方使用同一种规则,对信息进行解密。

二、互质关系

如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。

三、欧拉函数

任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?)

计算这个值的方法就叫做欧拉函数,以φ(n)表示。在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n) = 4。

- 阅读剩余部分 -

在 Go 语言中管理 Concurrency 的三种方式

相信大家踏入 Go 语言的世界,肯定是被强大的并发(Concurrency)所吸引,Go 语言用最简单的关键字go就可以将任务丢到后台处理,但是开发者怎么有效率的控制并发,这是入门 Go 语言必学的技能,本章会介绍几种方式来带大家认识并发,而这三种方式分别对应到三个不同的名词:WaitGroup,Channel,及 Context。下面用简单的范例带大家了解。

WaitGroup

先来了解有什么情境需要使用到 WaitGroup,假设您有两台机器需要同时上传最新的代码,两台机器分别上传完成后,才能执行最后的重启步骤。就像是把一个工作同时拆成好几份同时一起做,可以减少时间,但是最后需要等到全部做完,才能执行下一步,这时候就需要用到 WaitGroup 才能做到。

- 阅读剩余部分 -

Golang math基本数学函数

三角函数

正弦函数,反正弦函数,双曲正弦,反双曲正弦

  • func Sin(x float64) float64
  • func Asin(x float64) float64
  • func Sinh(x float64) float64
  • func Asinh(x float64) float64

一次性返回sin,cos

  • func Sincos(x float64) (sin, cos float64)

余弦函数,反余弦函数,双曲余弦,反双曲余弦

  • func Cos(x float64) float64
  • func Acos(x float64) float64
  • func Cosh(x float64) float64
  • func Acosh(x float64) float64

正切函数,反正切函数,双曲正切,反双曲正切

  • func Tan(x float64) float64
  • func Atan(x float64) float64 和 func Atan2(y, x float64) float64
  • func Tanh(x float64) float64
  • func Atanh(x float64) float64

- 阅读剩余部分 -

Ubuntu 16.04/18.04忘记登陆密码的解决方法

很长时间没有在虚拟机上操作Ubuntu系统了,所以忘记了当初安装Ubuntu系统时设置的登陆密码,经过摸索,找到了解决方法,现在分享出来,给同样需要的人。本文所用的Ubuntu版本是16.04,所用的GNU GRUB是2.02版的。经过测试,它也适用在Ubuntu 18.04下,可以这么说,所有的Ubuntu版本忘记了登陆密码都可以参考本文的方法。

1、开机时一直按着shift键,进入像是windows bios界面一样的界面:
bios界面

- 阅读剩余部分 -

Golang--数据类型

A 基本数据类型

1 布尔类型 bool
1)Go 对于值之间的比较有非常严格的限制,只有两个类型相同的值才可以进行比较,如果值的类型是接口(interface),它们也必须都实现了相同的接口。如果其中一个值是常量,那么另外一个值的类型必须和该常量类型相兼容的。
2)对于布尔值的好的命名能够很好地提升代码的可读性,例如以 is 或者 Is 开头的isSorted 、 isFinished 、 isVisivle 。
3)在格式化输出时,你可以使用 %t 来表示你要输出的值为布尔型。
4)布尔型的值只可以是常量 true 或者 false。

2 数字类型
##有符号整数
int8(-128 -> 127)
int16(-32768 -> 32767)
int32(-2,147,483,648 -> 2,147,483,647)
int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
int( 32 位操作系统上64 位,64 位操作系统64 位)

##无符号整数
uint8(0 -> 255)
uint16(0 -> 65,535)
uint32(0 -> 4,294,967,295)
uint64(0 -> 18,446,744,073,709,551,615)
uint ( 32 位操作系统上64 位,64 位操作系统64 位)

- 阅读剩余部分 -