随着计算机技术的广泛应用,它与人们的生活越来越密不可分。特别是近几年各行业为了提高服务质量、方便广大客户,纷纷推出各种磁卡和IC卡,各种类型的磁卡、IC卡已经成为人们的日常生活中不可缺少的组成部分,如各种银行信用卡、电话卡、乘车卡、200卡等。
各种卡进入人们生活,确实给人们的生活带来极大的方便,然而其中也存在着风险,你是否意识到其中的风险?笔者就面向用户的应用系统中的密码设计和密码使用中存在的一些问题提出来,供软件开发人员和广大用户参考。
一、 应用程序开发中密码的设计重要性
各种应用程序,特别是管理程序,为了数据的保密、可靠、准确,不论是系统管理人员还是用户对系统的访问,都必须是一个合法的用户,且能提供正确的密码,才能对系统进行相应权限的操作。对于目前使用的各种类型卡,卡号就代表了合法用户,一旦卡丢失,唯一的制约关系就取决于密码,因此在各类卡的管理应用程序的设计中,密码设计尤为重要。
由于密码对数据的安全性起着关键作用,因此密码的保存更为重要。现大多数管理型的应用系统的数据都是保存在不同类型的数据库中,为了安全起见,数据库中保存的密码应是经过加密处理。一般的加密过程如下图:
象SQL Server等数据库就提供了这种密码加密功能,但有些数据库,象FoxPro等就必须在程序设计时,利用程序对密码数据进行加密处理后才能保存在数据库中。
二、 密码可选元素、密码的长度与密码破译的关系
若可选密码元素为n、密码长度为r,则密码的破译的概率为多少?
如果从n个元素中取r个元素的选排列,
则A=n(n-1)...(n-r+2(n-r+1)
若r=n则为全排列
则Pn=n(n-1)...2*1=n!
若一个元素被选后,仍然可以允许再次被选就为“允许重复排列”。
则密码可选元素为n,密码长度为r的“允许重复排列”排列数为:nr
r
若密码长度为k~r(k≤r),则可能出现的排列数为:∑nI
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/