我已经编写了一个生成6位随机OTP号的脚本,有什么简单的方法可以用较少的代码行获得6位OTP号吗?
My代码:
#!/bin/bash
dynamic_array=()
for (( i =1 ; i<=5 ; i++))
{
store_digit=$(shuf -i0-9 -n1) ; dynamic_array+=("$store_digit")
}
str_array_value="${dynamic_array[*]}" ; echo "Output : ${str_array_value// /}" 发布于 2020-11-09 13:56:33
如果您想要生成从共享秘密生成的实际OTP令牌,而不只是随机的六位字符串,您无法进行验证,则可以使用oathtool。
否则,steeldriver的评论就足够了:printf '%06d\n' "$(shuf -i0-999999 -n1)"。
发布于 2020-11-09 22:10:09
对于6位小数,我们需要一个大于15位的随机数。在这里,我将使用一个30位随机数:
((RND=RANDOM<<15|RANDOM)) ; echo ${RND: -6}编辑:只是几个测试,为了透视.
~# time for i in {0..2000} ;do printf '%06d\n' "$(shuf -i0-999999 -n1)" >/dev/null ;done
real 0m13.814s
user 0m9.573s
sys 0m4.302s
~# time for i in {0..2000} ;do ((RND=RANDOM<<15|RANDOM)) ; echo ${RND: -6} >/dev/null ;done
real 0m0.120s
user 0m0.101s
sys 0m0.019shttps://unix.stackexchange.com/questions/618760
复制相似问题