Linux命令行生成随机密码的方法有哪些

Linux命令行生成随机密码的方法有哪些,第1张

生成一个随机密码

对于下面的任何一种方法,你可以通过简单的修改来生成特定长度的密码,或者只使用其输出结果的前N位。希望你正在使用一些类似于LastPass的密码管理器,这样你就不用自己记住这些随机生成的密码了。

1. 这种方法使用SHA算法来加密日期,并输出结果的前32个字符:

Shell

1

date +%s | sha256sum | base64 | head -c 32 echo

2. 这种方法使用内嵌的/dev/urandom,并过滤掉那些日常不怎么使用的字符。这里也只输出结果的前32个字符:

Shell

1

</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32}echo

3. 这种方法使用openssl的随机函数。如果你的系统也许没有安装openssl,你可以尝试其它九种方法或自己安装openssl。

Shell

1

openssl rand -base64 32

4. 这种方法类似于之前的urandom,但它是反向工作的。Bash的功能是非常强大的!

1

tr -cd '[:alnum:]' </dev/urandom | fold -w30 | head -n1

5. 这种方法使用string命令,它从一个文件中输出可打印的字符串:

Shell

1

strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'echo

6. 这是使用urandom的一个更简单的版本:

Shell

1

</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6

7. 这种方法使用非常有用的dd命令:

Shell

1

dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev

8. 你甚至可以生成一个只用左手便可以输入的密码:

Shell

1

</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8echo ""

9. 如果每次都使用上述某种方法,那更好的办法是将它保存为函数。如果这样做了,那么在首次运行命令之后,你便可以在任何时间只使用randpw就可以生成随机密码。或许你可以把它保存到你的~/.bashrc文件里面。

Shell

1

randpw(){ </dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16}echo}

10. 最后这种生成随机密码的方法是最简单的。它同样也可以在安装了Cygwin的Windows下面运行。在Mac OS X下或许也可以运行。我敢肯定会有人抱怨这种方法生成的密码没有其它方法来的随机。但实际上如果你使用它生成的全部字符串作为密码,那这个密码就足够随机了。

Shell

1

date | md5sum

是的,这种方法也极其好记。

Openssl是用来生成一个密钥的,我们通常是成对出来了,下面一起来看看在linux 下Openssl的安装配置与使用方法,希望对各位有用。

1. Openssl介绍

自己网上找去吧,我说的不好!

2. 安装

1、下载地址:http://www.openssl.org/source/ 下一个最新新版本的OpenSSL,版本是:openssl-1.0.2-beta1.tar.gz

2、在下载的目录中,用命令执行:tar -xzf openssl-openssl-1.0.2-beta1.tar.gz

3、进入解压的目录:openssl-1.0.2-beta1 [.......]#cd openssl-1.0.2-beta1

4、[.....openssl-1.0.2-beta1]# ./config --prefix=/usr/local/openssl

5、[...../openssl-1.0.2-beta1]# ./config -t

6、[...../openssl-1.0.2-beta1]# make depend(时间很长)

7、[.../openssl-1.0.2-beta1]# make (时间很长,慢慢等待)

8、[.../openssl-1.0.2-beta1]# maketest

9、[.../openssl-1.0.2-beta1]# makeinstall

10、[...../openssl-1.0.2-beta1]# cd /usr/local

11、[/usr/local]# ln -s openssl ssl

12、在/etc/ld.so.conf文件的最后面,添加如下内容:/usr/local/openssl/lib

13...]# ldconfig

14添加OPESSL的环境变量:

在etc/的profile的最后一行,添加:

export OPENSSL=/usr/local/openssl/bin

export PATH=$OPENSSL:$PATH:$HOME/bin

15退出命令界面,再从新登录。

16、以上OPENSSL就安装完毕,下面进行一些检查。

17依次如下执行:

[root@localhost /]# cd /usr/local

[root@localhost local]# ldd /usr/local/openssl/bin/openssl

会出现类似如下信息:

linux-vdso.so.1 => (0x00007fff3bc73000)

libdl.so.2 =>/lib64/libdl.so.2 (0x00007fc5385d7000)

libc.so.6 =>/lib64/libc.so.6 (0x00007fc538279000)

/lib64/ld-linux-x86-64.so.2 (0x00007fc5387db000)

18查看路径

...]# which openssl

/usr/local/openssl/bin/openssl

19、...]# openssl version

OpenSSL 1.0.2-beta1 24 Feb 2014

3. 错误情况

自己写的程序出现这个(fatal error: openssl/sha.h: No such fileor directory)或者相似的问题,一开始以为是环境变量的问题,重装了几次,后来差了网络才知道问题所在,都是没有安装libssl-dev,libssl-dev包含libraries, header files and manpages,他是openssl的一部分,而openssl对ssl进行了实现。解决方案:使用sudo apt-get install libssl-dev来安装libssl-dev即可注:部分为网上抄袭!

下面来看使用方法,生成RSA

3.1 公私钥对生成

命令解析:openssl genrsa[-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4][-3] [-rand file(s)] [numbits]

OPTIONS

-out filename私有密钥输入文件名,缺省为标准输出。

-passout arg 参看指令dsa里面的passout参数说明-des|-des3|-idea 采用什么加密算法来加密我们的密钥。一般会要你输入保护密码。 如果这三个中一个也没set, 我们的密钥将不被加密而输入。

-F4|-3使用的公共组件,一种是3, 一种是F4, 我也没弄懂这个option是什么意思。

-randfile(s)产生key的时候用过seed的文件,可以把多个文件用冒号分开一起做seed.

-numbits指明产生的参数的长度。必须是本指令的最后一个参数。如果没有指明,则产生512bit长的参数。 研究过RSA算法的人肯定知道,RSA的私有密钥其实就是三个数字,其中俩个是质数。这俩个呢,就叫prime numbers.产生RSA私有密钥的关键就是产生这俩。还有一些其他的参数,引导着整个私有密钥产生的过程。因为产生私有密钥过程需要很多随机数,这个过程的时间是不固定的。

//root@ubuntu:/mnt/hgfs/windows_linux/AlipayEx/study/opensslstudy/study#openssl genrsa -out RSAPrivateKey.pem 1024

//root@ubuntu:/mnt/hgfs/windows_linux/AlipayEx/study/opensslstudy/study#openssl rsa -in RSAPrivateKey.pem -pubout -out RSAPublicKey.pem

3.2 读取密钥

PEM_read_RSAPrivateKey

PEM_read_RSA_PUBKEY

具体参数看文档去吧!

3.3 加解密

公钥加密,私钥解密

RSA_public_encrypt

RSA_private_decrypt

具体参数看文档去吧!

3.4 签名

私钥签名,公钥验签

SHAwithRSA

1.SHA1M(自己封装的)

2. RSA_sign(/*sha1withRSA第一个参数为NID_sha1,第二第三个参数为明文的sha1摘要及长度SA_verify

1. 使用openssl命令

OpenSSL是一个著名的、广泛使用的命令行工具,用于从shell中调用OpenSSL的crypto库的各种加密函数。要生成一个强PSK,请使用它的rand子命令,该命令生成伪随机字节并通过base64编码进行过滤,如下所示。

生成32位密钥:

openssl rand -base64 32

生成64位密钥:

openssl rand -base64 64

2. 使用GPG命令

GPG是使用OpenPGP标准提供数字加密和签名服务的命令行工具。您可以使用它的--gen-random选项来生成一个强PSK,并通过base64编码对其进行过滤,如下所示。

在以下命令中,1或2是质量级别,10、20、40和70是字符数量。

gpg --gen-random 1 10 | base64

gpg --gen-random 2 20 | base64

gpg --gen-random 1 40 | base64

gpg --gen-random 2 70 | base64

3.使用伪随机数生成器

您还可以使用Linux中的任意伪随机数生成器,如/dev/random或/dev/urandom,如下所示。head命令的-c选项有助于生成字符数。

head -c 35 /dev/random | base64

head -c 60 /dev/random | base64

使用伪随机数生成器

5. 使用date和sha245sum命令

可以组合date和sha256sum命令来创建一个强PSK,如下所示。

date | sha256sum | base64 | head -c 45echo

date | sha256sum | base64 | head -c 50echo

date | sha256sum | base64 | head -c 60echo


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7253014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存