清茶书香

一杯清茶,一本书籍,一个下午。


  • 首页

  • 归档

  • 分类

  • 关于

  • 搜索
Redis JPA Solr SpringData SpringMVC localRepository local Mapper 事务 Mybatis JDBC AOP DI IOC 常用函数 触发器 存储过程 Promise Gateway SpringCloud vue-cli axios es6 webpack npm vue 个性化 zsh 终端 caffeine jvm缓存 guava cache validation Mapping MapStruct comment 小程序 建站 WeHalo config logback plugins database idea maven spring https http nginx password RabbitMQ 秒杀系统 Windows MySQL 数据备份 halo SpringBoot shell Linux ip Optional Stream Lambda k8s Docker 列编辑 vim MacOS 图片合成 Java 远程联调 nps 内网穿透

使用Mac里的openssl生成密码

发表于 2020-11-20 | 分类于 工具 | 0 | 阅读次数 311

现在各种密码保存的软件,自己的密码都可以不用记着了,那么我们为了密码更加安全就完全可以使用随机生成的密码了,连我们自己的想不到的密码就比全部用自己的常用密码要安全许多。这个密码生成脚本是使用openssl的命令来生成,在Mac系统里是自带这个软件的。

使用openssl生成密码

#!/bin/zsh

if [ ! $1 ]
then
	len=9
elif [ "-h" = $1 ]
then
	echo "Usage: genpd			 Generate a 10-digit password."
	echo "Usage: genpd [number]		 Generate a number-digit password."
	exit 1
elif [ "$1" -gt 0 ] 2>/dev/null
then
	len=$1
else
	echo "illegal option -- $1      must number or [-h]"
	exit 2
fi

openssl rand -base64 $len

脚本写完后给它可执行权限,然后将其放到环境变量里,或者在文件的当前目录执行该脚本。

默认不加任何参数的话,随机种子使用的是9个,一般3的倍数不会输出最后的=,建议使用3的倍数。

使用自定义随机函数生成密码

如果不想使用openssl生成的密码,还可以使用下面我自己写的一个函数来生成密码。原理是使用系统随机函数从大小写字母、数字、常见符号中拿到一串随机的字符串作为密码。

#!/bin/zsh

function generator(){
	passwd=""
	base_str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.;><?[]{}~!@#$%^&*()-=+1234567890"
	for i in `seq 1 $1`;do
		pos=$RANDOM%${#base_str}
		char=${base_str:${pos}:1}
		passwd=$passwd$char
	done;
	echo $passwd
}

if [ ! $1 ]
then
	len=18
elif [ "-h" = $1 ]
then
	echo "Usage: genpd			 Generate a 10-digit password."
	echo "Usage: genpd [number]		 Generate a number-digit password."
	exit 1
elif [ "$1" -gt 0 ] 2>/dev/null
then
	len=$1
else
	echo "illegal option -- $1      must number or [-h]"
	exit 2
fi

generator $len

使用系统字符生成安全密码

将上面两种的方式也加入到选项中,可通过指定参数选择生成方式。

#!/bin/zsh

function generator(){
	passwd=""
	base_str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.;><?[]{}~!@#$%^&*()-=+1234567890"
	for i in `seq 1 $1`;do
		pos=$RANDOM%${#base_str}
		char=${base_str:${pos}:1}
		passwd=$passwd$char
	done;
	echo $passwd | pbcopy
	pbpaste
}

len=18

while getopts "l:osgh" args;
do
	case $args in
		l)
			len=$OPTARG
			;;
		s)
			# generate a secure password and copy to clipboard
			LC_ALL=C tr -dc "[:alnum:]" < /dev/urandom | head -c $len | pbcopy
			pbpaste
			echo "\npassword has copyed to clipboard."
			break
			;;
		o)
			openssl rand -base64 $len | pbcopy
			pbpaste
			echo "password has copyed to clipboard."
			break
			;;
		h)
			echo "Usage: genpd [-s|-o|-g]                 Generate a 18-digit password."
			echo "Usage: genpd -l [number] [-s|-o|-g]     Generate a number-digit password."
			echo "[-s]: Generate a safe password."
			echo "[-o]: Generate a password containing characters."
			echo "[-g]: Generate a password containing all common characters."
			break
			;;
		g)
			generator $len
			echo "password has copyed to clipboard."
			;;
		?)
			echo "illegal option -- $args      you can use genpd -h."
			exit 1
			;;
		esac
done

如果你还有什么好的方案也可以在评论区中留言。

Bennett wechat
欢迎收藏我的微信小程序,方便查看更新的文章。
  • 本文作者: Bennett
  • 本文链接: https://hibennett.cn/archives/generatepassword
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# MacOS # Linux # shell # password
秒杀系统设计
nginx禁止IP直接访问
  • 文章目录
  • 站点概览
Bennett

Bennett

60 日志
28 分类
74 标签
RSS
Github E-mail Gitee QQ
Creative Commons
Links
  • MacWk
  • 知了
0%
© 2020 — 2023 hibennett.cn版权所有
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4

浙公网安备 33010802011246号

    |    浙ICP备2020040857号-1