pwgen生成的密码易于记忆且相当安全。从技术上来说,容易记忆的密码不会比随机生成的密码更加安全。但是,在大多数情况下,pwgen生成的密码已经足够安全,除了网银密码等需要高安全等级的情况外。使用易于记忆的密码的好处就是你不会把这些密码写下来或者存到电脑上的某个地方,这样做本来就是不安全的。

安装pwgen,在终端窗口输入(适用于Debian系列的Linux系统):

sudo apt-get install pwgen

不带任何参数就运行pwgen,将会输出满屏幕的密码。你可以从中选择一个作为自己的密码然后清除屏幕。采用这种方式生成密码,就是有人在你背后,他也不知道你选择的到底是哪一个。

运行pwgen,在终端输入:

pwgen

选好密码之后,在终端输入 clear 就可以“清除”终端窗口内容。

如果你确定背后没有人,可以使用“-1”参数来让pwgen只生成一个密码。

pwgen -1

如果想生成一个完全随机的密码,使用“-s”参数。

pwgen -1 -s

如果想提高密码的安全等级,可在密码中使用特殊字符(如感叹号、逗号等)。使用“-y”参数可以让生成的密码至少包括一个特殊字符。

pwgen -1 -s -y

pwgen 命令更多有趣的参数: 
-0:密码中不包含数字。
-B, --ambiguous:密码中不包含容易混淆的字符,比如说“1”和“l”、“0”和“O”。
-v, --no-vowels:密码不包括元音字母或者可能被误认为是元音字母的数字。

下面来看几个具体的例子:
1. 使用命令 pwgen 来生成一个长度为 10 个字符的独特的随机密码。

$ pwgen 10 1

生成一个独特的随机密码

一口气生成若干组长度为 50 个字符的唯一的随机密码!

$ pwgen 50

生成多组随机密码

2. 你还可以使用 makepasswd 来每次生成一个给定长度的独特的随机密码。在你把玩 makepasswd 命令之前,请确保你已经安装了它。如若没有安装它,试试使用 Apt 或 YUM 包管理器来安装 makepasswd这个软件包。

生成一个长度为 10 个字符的随机密码。该命令产生的密码的长度默认为 10。

$ makepasswd

使用 makepasswd 生成独特的密码

生成一个长度为 50 个字符的随机密码。

$ makepasswd --char 50

生成长度为 50 的密码

生成 7 个长度为 20 个字符的随机密码。

$ makepasswd --char 20 --count 7

3. 使用带“盐”的 Crypt来加密一个密码。提供手动或自动添加 “盐”。

对于那些不清楚 盐 的意义的人,这里的 “盐” 指的是一个随机数据,它作为密码生成函数的一个额外的输入, 目的是保护密码免受词典攻击。

在执行下面的操作前,请确保你已经安装了 mkpasswd。

下面的命令将带 “盐” 加密一个密码。“盐” 的值是随机自动生成的。所以每次你运行下面的命令时,都将产生不同的输出,因为它每次接受了随机取值的 “盐”。

$ mkpasswd tecmint

使用 Crypt 来加密密码

现在让我们来手动定义 “盐” 的值。每次它将产生相同的结果。请注意你可以输入任何你想输入的值来作为 “盐” 的值。

$ mkpasswd tecmint -s tt

带“盐”加密密码

另外, mkpasswd 还是交互式的,假如你在命令中没有提供密码,它将主动询问你来输入密码。

4. 使用 aes-256-cbc 加密算法并使用带“盐”的密码(如 “tecmint”) 加密一个字符串(如 “Tecmint-is-a-Linux-Community”)。

# echo Tecmint-is-a-Linux-Community | openssl enc -aes-256-cbc -a -salt -pass pass:tecmint

在 Linux 中加密一个字符串

在上面例子中, echo 命令的输出通过管道传递给了 openssl 命令,使得该输出通过加密编码方式(enc:Encoding with Cipher ) 所加密,这个过程中使用了 aes-256-cbc 加密算法,并附带了密码 (tecmint) 和 “盐” 。

5. 使用 openssl 命令的 -aes-256-cbc 解密选项来解密上面的字符串。

# echo U2FsdGVkX18Zgoc+dfAdpIK58JbcEYFdJBPMINU91DKPeVVrU2k9oXWsgpvpdO/Z | openssl enc -aes-256-cbc -a -d -salt -pass pass:tecmint

在 Linux 中解密字符串

现在就是这些内容了。

Linux系统下使用pwgen生成密码的使用教程的更多相关文章

  1. 修改linux系统下mysql数据库登陆密码(密码忘记)

    报错:Access denied for user 'root'@'localhost' (using password: NO) 解决方案: 1. 检查mysql服务是否启动,如果启动,关闭mysq ...

  2. linux系统下mysql跳过密码验证登录和创建新用户

    修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables 例如: [mysqld] datadir=/var/lib/mysq ...

  3. linux系统下的权限知识梳理

    下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...

  4. 在Linux系统下安装大于mysql5.5版本的数据库

    linux下mysql 5.5的安装方法: 1.安装所需要系统库相关库文件      gcc等开发包,在安装linux系统的时候安装. 2.创建mysql安装目录 # mkdir -p /usr/lo ...

  5. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

  6. linux系统下修改文件夹目录权限

    linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...

  7. Linux系统下Apache2.4.17的安装过程

    Linux系统下安装Apache Server2.4.17.还是先声明一下,Linux命令我不进行讲解,因为我不是讲Linux命令的.有需要注意的地方,我会上图,没什么值得的注意的地方,我就不上图了. ...

  8. 编译Linux系统下的jrtplib3.9和jthread1.3(arm和ubuntu)

    最近由于学习需要,需要编译jrtplib,网上的资料基本上都是关于3.9以前的版本,而以前的版本基本上都是通过confiugre来配置生成Makefile,而最近的版本却没有这一项,而是使用cmake ...

  9. linux系统下搭建自己的web服务器

    之前在windows 2008 server上搭建了一个用于测试的web服务器,但是在打开网站的时候特别的慢,尤其是图片的加载都会失败,当时以为是路径的问题,但是在服务器上自己打开都特别慢,自己实在找 ...

随机推荐

  1. 无法打开输入文件“optimized.lib” 编译osgEarth2.8+VS2013+CMake3.4.0在Release版本的问题

    1>LINK : fatal error LNK1181: 无法打开输入文件“optimized.lib” 可以到http://forum.osgearth.org搜索相关帖子,gwaldron ...

  2. 面试题思考:Cookie 和 Session的区别

    面试回答: 1.cookie数据存放在客户的浏览器上,session数据放在服务器上. 2.cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用ses ...

  3. sql查询用nolock

    大家在写查询时,为了性能,往往会在表后面加一个nolock,或者是with(nolock),其目的就是查询是不锁定表,从而达到提高查询速度的目的. 什么是并发访问:同一时间有多个用户访问同一资源,并发 ...

  4. DB2 SQL方式查看版本

    SELECT service_level, fixpack_num FROM TABLE   (sysproc.env_get_inst_info())   as INSTANCEINFO

  5. vertical-align 使用参考

    在实现文字与图片垂直对齐的时候,发现了vertical-align的值也是很纷繁复杂,博客讲解各种不懂,最终还是找了CSS权威指南-中文第三版,看了前6章,终于弄明白了,如果你也有不懂的地方,请去看书 ...

  6. 【Python之路】第十七篇--Ajax全套

    概述 1.传统的Web应用 一个简单操作需要重新加载全局数据 2.AJAX AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交 ...

  7. Pipeline inbound

    精进篇:netty源码死磕7  巧夺天工--Pipeline入站流程详解 1. Pipeline的入站流程 在讲解入站处理流程前,先脑补和铺垫一下两个知识点: (1)如何向Pipeline添加一个Ha ...

  8. linux下EOF写法梳理 自动新建分区并挂载的脚本

    linux下EOF写法梳理 - 散尽浮华 - 博客园 https://www.cnblogs.com/kevingrace/p/6257490.html 在平时的运维工作中,我们经常会碰到这样一个场景 ...

  9. Hibernate缓存原理

    对于Hibernate这类ORM而言,缓存显的尤为重要,它是持久层性能提升的关键. 简单来讲Hibernate就是对JDBC进行封装,以实现内部状态的管理,OR关系的映射等, 但随之带来的就是数据访问 ...

  10. “技术产品”面向市场的表达方法思辨——BY Me

    “技术产品”面向市场的表达方法思辨 首先,我们来看看“技术产品”在面向市场去表达的时候,怎么表述是容易被市场接受和理解的,“目标受众是谁?”.“市场切入点是什么?”,做到有的放矢,打动目标受众.切中其 ...