linux產生隨機數的方式

2021-10-19 17:34:03 字數 1763 閱讀 9193

[root@localhost ~]# echo $random

22658

random的隨機數範圍為0-32767,可以通過在輸出的隨機數後增加字串的方式,最後再一起執行md5sum操作並擷取結果的後n位。

[root@localhost ~]# echo  test$random | md5sum

8b2e15402190b2e8013ba9cbf6e52eed -

[root@localhost ~]# openssl rand -base64 8

xsbca8d4sbc=

[root@localhost ~]# openssl rand -base64 20

piolmcqmrd7wddsbia1b2ioa3wi=

rand :生成偽隨機數

base64 :用base64編碼

[root@localhost ~]# date +%s%n

1582245833745396334

[root@localhost ~]# date +%s%n

1582245836618805122

%s:秒

%s%n:秒+納秒

(4)通過/dev/urandom配合chksum生成隨機數

[root@localhost ~]# head /dev/urandom | cksum

311343640 1978

[root@localhost ~]# head /dev/urandom | cksum

4125751600 1906

(5)通過uuid生成隨機數

uuid碼全稱是通用唯一識別碼(universally unique identifier,uuid),uuid的目的是讓分布式系統中的所有元素都能有唯一的標識資訊,而不需要通過**控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其他人發生衝突uuid。在這樣的情況下,就不需要考慮資料庫建立時的名稱重複問題了。它會讓網路中任何一台計算機所生成的uuid碼都是整個伺服器網路中唯一的編碼。它的原資訊會加入硬體、時間、機器當前執行資訊等。

[root@localhost ~]# cat /proc/sys/kernel/random/uuid

b3684023-1a6c-4140-be33-5ba74746b846

[root@localhost ~]# cat /proc/sys/kernel/random/uuid

5a67ab57-5fad-45af-be58-62221eb10138

(6)使用expect附帶的mkpasswd生成隨機數

[root@localhost ~]# which mkpasswd

/usr/bin/mkpasswd

[root@localhost ~]# rpm -qf /usr/bin/mkpasswd

expect-5.45-14.el7_1.x86_64

mkpasswd選項:

-l:指定密碼長度

-d:指定密碼中數字的數量

-c:指定密碼中小寫字母的數量

-c:指定密碼中大寫字母的數量

-s:指定密碼中特殊字元的數量

[root@localhost ~]# mkpasswd -l 8 -d 2 -c 2 -c 2 -s 2

=ls7ey6?

linux產生隨機數

函式rand 是真正的隨機數生成器,而srand 會設定供rand 使用的隨機數種子。函式rand 會返回乙個處於0和你所指定的數值 缺 省為1 之間的分數。如果你在第一次呼叫rand 之前沒有呼叫srand 那麼系統會為你自動呼叫srand 而使用同種子相同的數呼叫 srand 會導致相同的隨機數...

產生隨機數

先說明一下rand,這個函式用來產生偽隨機數。比如,產生1000的兩個隨機數,產生的兩個一般上是不同的,但如果要產生80個100以內的隨機數,僅用rand函式就不夠。因為產生80個100以內的隨機數,至少有兩個數相等的概率太大了 srand函式,並不能使產生的隨機數完全不同。你可以執行以下這串 in...

隨機數產生

c c 中取隨機數 在計算機中並沒有乙個真正的隨機數發生器,但是可以做到使產生的數字重複率很低,這樣看起來好象是真正的隨機數,實現這一功能的程式叫偽隨機數發生器。有關如何產生隨機數的理論有許多,如果要詳細地討論,需要厚厚的一本書的篇幅。不管用什麼方法實現隨機數發生器,都必須給它提供乙個名為 種子 的...