前面已经讲了生成密码需要用到随机数随机种子函数和随机数生成函数,下面就总结一下在这个项目中是如何结合随机数来生成密码的。
需求:输入密码长度,选择密码特点(比如包含数字,字母),点击按钮生成相应位数的密码,并把密码对应的密码原文显示出来。
实现步骤:
1.设置总的密码库(组成密码的所有可能字符)和密码原文,并用字典把密码和密码原文对应起来。
2.根据密码特性把密码归类,比如数字类,字母类,方面后面根据用户选择的密码包含哪些特点来设置密码库。
3.根据选择特点来构建一个密码库(如密码只包含数字和字母,那么这个密码库就包含所有的数字和字母)。
4.获取密码:随机的从密码库中获取每一个密码,密码库是一个字符串,把随机数对字符串的个数取模,就得到字符串个数范围内的一个随机数n,取密码库(字符串)第n个字符就得到一个随机密码。这样依次按照密码长度来循环,就得到一个随机密码。
5.遍历生产的密码,根据键值对得到每个密码原文,组成字符串显示到视图上。
代码:
#import "MainViewController.h"
#define RANDOM_SEED() srandom(time(NULL))
#define RANDOM_INT(__MIN__,__MAX__) ((__MIN__) + random() % ((__MAX__+1) - (__MIN__)))
@interface MainViewController ()
@end
@implementation MainViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
_passwordLength.delegate = self;
_password.delegate = self;
UIImage *buttonBackgrd = [[UIImage imageNamed:@"blueButton.png"] stretchableImageWithLeftCapWidth:12.0 topCapHeight:12.0];//注意:查一下这个方法
[_creatPwButton setBackgroundImage:buttonBackgrd forState:UIControlStateNormal];
[_emailPwButton setBackgroundImage:buttonBackgrd forState:UIControlStateNormal];
[_creatPwButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[_emailPwButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
UIImage *buttonBackgrdSel = [[UIImage imageNamed:@"whiteButton.png"] stretchableImageWithLeftCapWidth:12.0 topCapHeight:12.0];
[_creatPwButton setBackgroundImage:buttonBackgrdSel forState:UIControlStateHighlighted];
[_creatPwButton setBackgroundImage:buttonBackgrdSel forState:UIControlStateSelected];
[_emailPwButton setBackgroundImage:buttonBackgrdSel forState:UIControlStateH