小技巧:在Linux下生成crypt加密密码

原创
系统 Linux
当我们用红帽Kickstart脚本或useradd或其他方式写东西的时候,经常会需要用到crypt命令加密生成的密码格式。在Linux下,有很多方法可以生成这种加密格式的密码。本文就介绍了几个常用的,如mkpasswd,htpasswd,openssl等命令,以及几个常用脚本语言的实现方式。

【51CTO快译】当我们用红帽Kickstart脚本或useradd或其他方式写东西的时候,经常会需要用到crypt命令加密生成的密码格式。那么,有没有其他方式可以生成这种格式的密码?事实上,方法有很多。

我们可以用mkpasswd命令:这个命令就是用来生成crypt格式的密码的:

mkpasswd

输入命令后,程序会要求输入一个密码,然后生成crypt格式的字符串。

如果用Apache Web服务器,那么也可以用htpasswd:

htpasswd -nd user

用户名(user)叫什么都无所谓,我们关注的是密码。这个命令会输出一个user:password格式的字符串,直接把password字段复制下来就ok了。

有OpenSSL的话,可以使用openssl命令:

openssl passwd -crypt myPassword

把上面命令中的myPassword用你想用的密码字符串代替。

其他还有一些需要把命令在命令行中直接输入的方式,不过这种做法有个问题,就是在ps命令中可以看到密码,同时密码也会被记录入shell历史。

不过这个问题是有解决办法的:用脚本,或者语言解释器。

比如使用Perl:

perl -e "print crypt('password','sa');"

Perl需要一个加密盐,如这里使用了sa(salt指加密中用到的随机字符串,用不同的salt可以生成不同的加密结果)。

Ruby也一样需要加密盐:

ruby -e 'print "password".crypt("JU"); print("\n");'

PHP也可以:

php -r "print(crypt('password','JU') . \"\n\");"

需要注意的是,如果不使用加密盐(如上面命令中的JU),那么输出的字符串将不是crypt加密格式,而是MD5加密格式的。所以,加密盐其实是必须的参数。

Python需要导入crypt库并使用加密盐:

python -c 'import crypt; print crypt.crypt("password","Fx")'

这里的加密盐是Fx。

数据库也可以生成crypt密码。比如用MySQL:

echo "select encrypt('password');" | mysql

另外,Tcl,Ubuntu下的trf,还有Lua的lua-crypt插件也可以实现相同的目的。

欢迎补充其他的方式!

英文来源

【编辑推荐】

  1. Linux下产生随机密码10方法
  2. Linux用户管理安全宝典:密码防破解与帐号文件保护
  3. 教你Linux省略密码的简单做法
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2021-10-15 13:00:55

LinuxSeahorse加密密钥

2022-10-09 10:18:44

LinuxShell脚本

2019-03-27 11:30:30

Linux终端密码生成器

2017-01-05 14:01:38

linux密码高强度

2014-04-10 18:52:22

2015-08-03 09:20:24

2018-12-10 09:00:00

Linux加密分区dm-crypt

2022-06-28 10:58:48

协议通信加密

2021-07-18 11:43:58

Linux密码加密

2021-07-15 13:32:12

Linux生成密码

2020-05-19 13:55:38

Python加密密码

2015-08-11 09:30:51

2015-06-17 14:18:30

Cryptsetup加密加密U盘

2023-10-27 07:20:11

2012-10-24 16:34:46

2022-01-09 08:17:52

量子计算机美国加密密钥服务

2009-07-06 18:09:18

linuxApache密码

2015-06-09 10:44:11

2019-05-06 10:21:09

加密密钥云安全云计算

2023-07-27 13:31:14

Linux语言数据
点赞
收藏

51CTO技术栈公众号