shell实例第2讲:获取随机字符串
獲取隨機字符串常用三種方法:
方法一:
echo $RANDOM |md5sum |cut -c 1-8說明:
(1)RANDOM會產生隨機數,經過md5sum,再通過cut截取第一位到第八位的字符串
(2)md5sum命令用于生成和校驗文件的md5值,md5值是一個128位的二進制數據,轉換成16進制則是32(128/4)位的進制值。md5校驗,有很小的概率不同的文件生成的md5可能相同。比md5更安全的校驗算法還有SHA*系列的。
(3)UNIX下校驗文件一致性的方法很多,比如sum、cksum、md5sum、sha1sum等。sum和cksum適用于簡單校驗的場合,生成的校驗碼容易重復。md5sum有安全漏洞,當前比較推薦的是sha1sum。不過sha1sum在不同的平臺用法有些不同。考慮到跨平臺性,建議用openssl。
cut命令有兩項功能:
??? 1)用來顯示文件的內容,它依次讀取由參數file所指明的文件,將它們的內容輸出到標準輸出上;
??? 2)連接兩個或多個文件,如cut fl f2 > f3將把文件fl和幾的內容合并起來,然后通過輸出重定向符“>”的作用,將它們放入文件f3中
??? 參數:-c:僅顯示行中指定范圍的字符;
?
方法二:
openssl rand -base64 4?說明:
(1)OpenSSl命令總覽
語法格式:openssl command [ command_opts ] [ command_args ]
常用command:
version??? 用于查看版本信息
enc??????? 用于加解密
ciphers??? 列出加密套件
genrsa??? 用于生成私鑰
rsa??????? RSA密鑰管理(例如:從私鑰中提取公鑰)
req??????? 生成證書簽名請求(CSR)
crl??????? 證書吊銷列表(CRL)管理
ca???????? CA管理(例如對證書進行簽名)
dgst????? 生成信息摘要
rsautl??? 用于完成RSA簽名、驗證、加密和解密功能
passwd??? 生成散列密碼
rand????? 生成偽隨機數
speed????? 用于測試加解密速度?????????????????? ?
s_client? 通用的SSL/TLS客戶端測試工具
X509?????? X.509證書管理
verify????? X.509證書驗證
pkcs7?????? PKCS#7協(xié)議數據管理
(2)-base64:對產生的東西進行base64編碼,后面可以指明產生多少字節(jié)隨機數。不指定-base64或-hex時生成的隨機數是亂碼隨機數(其實是2進制),且沒有\(zhòng)n符號。
?
?方法三:
cat /proc/sys/kernel/random/uuid |cut -c 1-8說明:
(1)UUID 是通用唯一識別碼,UUID 的目的是讓分布式系統(tǒng)中的所有元素都能有唯一的識別信息。為了保證UUID的唯一性,規(guī)范定義了包括網卡MAC地址、時間戳、名字空間(Namespace)、隨機或偽隨機數、時序等元素,以及從這些元素生成UUID的算法。UUID的復雜特性在保證了其唯一性的同時,意味著只能由計算機生成。
(2)每次cat /proc/sys/kernel/random/uuid都會生成不同的隨機碼
?
?
總結
以上是生活随笔為你收集整理的shell实例第2讲:获取随机字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell实例第1讲:编写shell脚本
- 下一篇: shell实例第3讲:获取随机8位数字