如何java创建随机数一个随机的密码

下次自动登录
现在的位置:
& 综合 & 正文
C++程序员面试题
生成随机密码 (二)
写一个函数,生成一个指定长度的密码。
要求:密码由大写字母、小写字母和数字三种符号组成,并且大写字母、小写字母和数字必须都有。
这是一个模块清晰,细节处理,以及返回值正确的函数,追风写。
#include "stdafx.h"
#include &ctime&
#include &iostream&
const int ***AILABLE_CHAR_COUNT = 62; //常量
const char g_availablechar[***AILABLE_CHAR_COUNT] ={ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
//生成密码函数
char * getRandomStringPwd(int length)
if (length & 0)
char *pwd = new char[length + 1];
srand(time(NULL)); //初始化为系统时间,在短时间内生成的密码应该是一样的。
for (int i = 0; i & ++i)
int randomNum = rand() % ***AILABLE_CHAR_COUNT;//生成0-61之间的随机数
pwd[i] = g_availablechar[randomNum];
pwd[length] = '\0';
//返回堆上指针pwd
//判断密码是否符合需求,有大写、小写、数字
bool isPwdCorrect(char * pwd)
bool isHasLower =
bool isHasUpper =
bool isHasNum =
if (pwd != NULL)
for (int i = 0; pwd[i] != '\0'; ++i)
if (pwd[i] &= 'A' && pwd[i] &= 'Z')
isHasUpper =
if (pwd[i] &= 'a' && pwd[i] &= 'z')
isHasLower =
if (pwd[i] &= '0' && pwd[i] &= '9')
isHasNum =
return (isHasNum && isHasUpper && isHasLower);
//获取正确的随机密码
char *getCorrectPwd(int length)
char *pwd = getRandomStringPwd(length);
while (!isPwdCorrect(pwd))
if (pwd != NULL)
pwd = NULL;
pwd = getRandomStringPwd(length);
int main()
char * pwd = getCorrectPwd(6);
cout && pwd &&
//一定要记得delete
&&&&推荐文章:
【上篇】【下篇】比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
用Linux命令行生成随机密码的十种方法
关键字:Linux技巧
  的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它。例如,你可以通过数十种方法来生成随机密码。本文将介绍生成随机密码的十种方法。
  这些方法均收集于Command-Line Fu,并且在我们自己的Linux PC机上测试过。这十种方法的一些在***了Cygwin的Windows下也是可以运行的,特别是最后一种方法。
  生成一个随机密码
  对于下面的任何一种方法,你可以通过简单的修改来生成特定长度的密码,或者只使用其输出结果的前N位。希望你正在使用一些类似于的密码管理器,这样你就不用自己记住这些随机生成的密码了。
  1. 这种方法使用SHA算法来加密日期,并输出结果的前32个字符:
  date +%s | sha256sum | base64 | head -c 32 ; echo
  2. 这种方法使用内嵌的/dev/urandom,并过滤掉那些日常不怎么使用的字符。这里也只输出结果的前32个字符:
  & /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};
  3. 这种方法使用openssl的随机函数。如果你的系统也许没有***openssl,你可以尝试其它九种方法或自己***openssl。
  openssl rand -base64 32
  4. 这种方法类似于之前的urandom,但它是反向工作的。Bash的功能是非常强大的!
  tr -cd '[:alnum:]' & /dev/urandom | fold -w30 | head -n1
  5. 这种方法使用string命令,它从一个文件中输出可打印的字符串:
  strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
  6. 这是使用urandom的一个更简单的版本:
  & /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6
  7. 这种方法使用非常有用的dd命令:
  dd if=/dev/urandom bs=1 count=32 2&/dev/null | base64 -w 0 | rev | cut -b 2- | rev
  8. 你甚至可以生成一个只用左手便可以输入的密码:
     9. 如果每次都使用上述某种方法,那更好的办法是将它保存为函数。如果这样做了,那么在首次运行命令之后,你便可以在任何时间只使用randpw就可以生成随机密码。或许你可以把它保存到你的~/.bashrc文件里面。
  randpw(){ & /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};}
  10. 最后这种生成随机密码的方法是最简单的。它同样也可以在***了Cygwin的Windows下面运行。在 X下或许也可以运行。我敢肯定会有人抱怨这种方法生成的密码没有其它方法来的随机。但实际上如果你使用它生成的全部字符串作为密码,那这个密码就足够随机了。
  date | md5sum
  是的,这种方法也极其好记。
[ 责任编辑:jj ]
去年,手机江湖里的竞争格局还是…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注Chinabyte

参考资料

 

随机推荐