1. 程式人生 > >Linux下生成隨機數和隨機字串

Linux下生成隨機數和隨機字串

1、生成長度為32的隨機字串

head -c 32 /dev/random | base64

該方式產生的隨機數效果比較好,但是,當不能產生隨機數時,它會阻塞在那裡,也就是為阻塞程式的執行
2、用/dev/urandom檔案產生

head -c 32 /dev/random | base64

該方式產生的隨機數隨機效果一般是,但是產生速度快,不會阻塞程式的執行
3、使用openssl方式

openssl rand -hex 10

4、生成隨機數:

[root@73 ~]# echo $RANDOM
32641
[root@73 ~]# echo $RANDOM
9753
[root@73
~]# echo $RANDOM 710

注:得到的這個隨機數是介於 0~32767 之間的一個整數。

5、生成隨機字串

a、[root@73 ~]# head -n 5 /dev/urandom |sed 's/[^a-Z0-9]//g'|strings -n 4
fEVN
Lfkm0
PMSZfO
tEIw
aKbc
MWLTk1

注:生成由a-Z和0-9組成的字串。

b、[root@73 ~]# openssl passwd -stdin < <(echo) 
5LYYPmuNIFS9c 

c、[root@73 ~]# head -n 5 /dev/urandom |strings -n 5
]bE&O p\#P6C _\I[K C3Hn2,= $JfV5q {8tD) zG}Uw

注:
strings:
在物件檔案或二進位制檔案中查詢可列印的字串。
語法:
語法

strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [ File ... ]

引數:

-a 或 - 搜尋整個檔案,而不僅僅是資料段,以尋找可列印的字串。如果省略這個標誌,則 strings 命令只在物件檔案的初始化資料空間內尋找。
-n Number 指定最小的字串長度(除了預設的 4 個字元以外)。字串長度的最大值是 4096
。這個標誌與 -Number 標誌相同。
-o 列出檔案中每個跟隨在其八進位制偏移量之後的字串。這個標誌與 -t o 標誌相同。 -t Format 列出從檔案最開始起,每個跟隨在其偏移量之後的字串。該格式取決於用作 Format 變數的字元。 d 以十進位制寫下偏移量。 o 以八進位制寫下偏移量。 x 以十六進位制寫下偏移量。 注:當 -o 和 -t Format 標誌在一個命令列上多次定義,則最後指定的標誌控制 strings 命令的行為。 -Number 指定最小的字串長度(除了預設的 4 個字元以外)。字串長度的最大值是 4096。這個標誌與 -n Number 標誌相同。 File 要搜尋的二進位制檔案或物件檔案。

退出狀態
該命令返回以下退出值:
0 表示命令成功執行。

0 表示出錯。

3、從指定字元集合中生成隨機字串:

#!/bin/bash
MATRIX="0[email protected]#$%^&*()_+="
LENGTH="9"
while [ "${n:=1}" -le "$LENGTH" ]
do
        PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
        let n+=1
done
        echo "$PASS"

exit 0

4、通過時間獲得隨機數(date)

[chengmo@centos5  shell]$date +%s%N
1287764807051101270
#這個可以說比較完美了,加入了時間戳,又加上了納秒

5、通過系統內部唯一資料生成隨機數(/dev/random,urandom)

[chengmo@centos5  shell]$head -1/dev/urandom
ãņù…•KTþçanVÕã¹Û&¡õ¾“ô2íùU“ žF¦_ ÿ”†mEðûUráÏ=J¯TŸA•ÌAÚRtÓ

讀一行,怎麼是亂碼呢?其實它是通過二進位制資料儲存實時資料的,那麼我們怎麼樣把它變成整型資料呢?


[chengmo@centos5 ~/shell]$head -200/dev/urandom | cksum
1615228479 50333

由於urandom的資料是非常多,不能直接通過cat讀取,這裡取前200行,其實整個資料都是變化的,取多少也一樣是唯一的。

cksum 將讀取檔案內容,生成唯一的表示整型資料,只有檔案內容不變,生成結果就不會變化,與php crc函式

6、讀取linux 的uuid碼

[chengmo@centos5 ~/shell]$cat /proc/sys/kernel/random/uuid| cksum |cut -f1 -d" "
2141807556

相關推薦

Linux生成隨機數隨機字串

1、生成長度為32的隨機字串 head -c 32 /dev/random | base64 該方式產生的隨機數效果比較好,但是,當不能產生隨機數時,它會阻塞在那裡,也就是為阻塞程式的執行 2、用/dev/urandom檔案產生 head -c 32 /

ruby 生成隨機數 隨機字串

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

robot framework 生成隨機數或是隨機字符串(萬能的evaluate)

cli val line src inf detail ora ati 軟件 今天剛剛學到生產隨機數或是隨機字符串的知識。記錄一下(轉發自WHACKW的專欄) 1、生成隨機數 首先在第一個用法的同時,介紹一下這個關鍵字。Evaluate有2個參數,一個是表達式,一個是模塊。

linux生成patch打patch

1 patch 的生成 使用diff指令生成補丁檔案 1.1 單個檔案的生成指令 diff -up 檔案1 檔案2 > patch_test.patch 引數解釋: u: 顯示有差異行的前後幾行(上下文), 預設是前後各3行 p: 顯示程式碼所在的c函式的資訊 1.2 兩個資料夾的生成指令

Linux獲取隨機數隨機碼)的6種方法

第一種:藉助環境變數$RANDOM [[email protected] ~]# echo $RANDOM 14535 ##說明:linux系統下的環境變數$RANDOM的取值範圍是:0–32767 。 1. 產生0-25範圍內的數,用這個環境變

隨機數隨機字串

function GetRandomNum(Min,Max) { var Range = Max - Min; var Rand = Math.random(); return(Min + Math.round(Rand * Range));

linux生成https的crtkey證書

openssl https今天在配置kibana權限設置時,kibana要求使用https鏈接。於是總結了一下linux下openssl生成 簽名的步驟:x509證書一般會用到三類文,key,csr,crtKey 是私用密鑰openssl格,通常是rsa算法。Csr 是證書請求文件,用於申請證書。在制作

Linux生成隨機密碼(轉)

1、使用SHA演算法來加密日期,並輸出結果的前32個字元: date +%s |sha256sum |base64 |head -c 32 ;echo 生成結果如下: ZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4 2、使用內嵌的/dev/urandom,並過濾掉那些日常

Linux生成隨機密碼的19種方式方法

轉載地址 https://baijiahao.baidu.com/s?id=1611646541119120439&wfr=spider&for=pc   1. 使用 sha256sum # date +%s | sha256sum | base64 | h

Windows Linux 生成以當前時間命名的檔案

 在 Windows、Linux 作業系統,分別利用BAT批處理檔案和Shell指令碼,生成類似“20110228_082905.txt”以“年月日_時分秒”命名的檔案。   Windows BAT批處理檔案: @echo off set time_hh=%time:~0,2

JS生成任意範圍隨機數,JS生成任意長度隨機字串

生成隨機數 /** * 生成任意範圍內隨機數 * 支援正數,負數,整數,小數 * 預設範圍[0, 100] * min: 最小值 * max: 最大值 * len: 小數點後位數 */ f

linux靜態庫動態庫的通用生成模板

                                                                    Makefile檔案的編寫#########################################################

linux生成,使用靜態動態連結庫

當要使用靜態的程式庫時,聯結器會找出程式所需的函式,然後將它們拷貝到執行檔案,由於這種拷貝是完整的,所以一旦連線成功,靜態程式庫也就不再需要了。 然而,對動態庫而言,就不是這樣。動態庫會在執行程式內留下一個標記‘指明當程式執行時,首先必須載入這個庫。由於動態庫節省空間,li

Db2數據庫在Linux的安裝配置

fig 用戶密碼 oca authent linux token reat local ken 一.DB2數據庫的安裝和配置: 1.安裝完成後,需要增加三個操作系統的組和三個操作系統用戶,如下: groupadd -g 999 db2iadm1 #(管理實例的組) gro

linux查看添加PATH環境變量

linuxlinux下查看和添加PATH環境變量$PATH:決定了shell將到哪些目錄中尋找命令或程序,PATH的值是一系列目錄,當您運行一個程序時,Linux在這些目錄下進行搜尋編譯鏈接。  編輯你的 PATH 聲明,其格式為:  PATH=$PATH:<PATH 1>:<PATH 2&

Linux創建刪除軟、硬鏈接 可臨時處理空間不足

clas 就會 blog file 兩種 而是 也有 符號連接 總計 在Linux系統中,內核為每一個新創建的文件分配一個Inode(索引結點),每個文件都有一個惟一的inode號。文件屬性保存在索引結點裏,在訪問文件時,索引結點被復制到內存在,從而實

Linux查看添加環境變量

erb 退出 post 版本 可能 php -v 當前 說明 mail Linux下查看和添加環境變量 CentOS系統下如何將PHP和mysql命令加入到環境變量中,在Linux CentOS系統上 安裝完php和MySQL後,為了使用方便,需要將php和mysql命

Linux更換jdk配置環境變量

pat 出現 下載jdk cnblogs clas home log code 文件 不需要刪除舊的jdk,安裝新版本的jdk,再更新環境變量即可。 Linux下安裝jdk,步驟如下 1:下載jdk包:本章使用的為後綴為tar.gz的文件(不需要安裝),如jdk-

Linuxps -efps aux的區別及格式詳解

占用內存 style star wid 內存交換 現在 linu pts tar Linux下顯示系統進程的命令ps,最常用的有ps -ef 和ps aux。這兩個到底有什麽區別呢?兩者沒太大差別,討論這個問題,要追溯到Unix系統中的兩種風格,System V風格和BSD

Skynet服務器框架(一) Linux的安裝啟動

進行 harbor 的人 新源 中心 -a 編譯 加載模塊 問題 根據雲風博客的描述,Skynet 的核心功能就是解決一個問題: 把一個符合規範的 C 模塊,從 動態庫(so文件)中啟動起來,綁定一個永不重復(即使模塊退出)的數字id做為其 handle。模塊 被稱為