关于SLE4428安全方案实现.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于SLE4428安全方案实现

关于SLE4428安全方案的实现   摘要: 本文简述了SLE4428的性能、分析SLE4428的设计原则及流程,并对使用SLE4428提出注意事项。   关键词: SLE4428;加密卡;密钥      1.SLE4428性能描述      1.1 SLE4428容量大小为1K字节,地址为0-1023。   2.2 所有数据除密码外,在任意情况下均可被读出,密码在核对正确后可以被读出。   3.3 所有数据包括密码本身在核对密码正确后可以写入或更改。   4.4 所有数据都可以按字节进行写保护,写保护后数据固化,任意情况下不可更改。   5.5 有一个密码出错计数器。地址是1021。初始值为8,密码核对出错一次,便减1。若计数器值为0,则整张卡的数据被锁死,只可读出,不可更改或写入且无法继续核对密码;若不为0,则只需要一次核对正确,计数器将恢复为初始值8。   6.6 密码长度为2字节,地址是1022,1023。共有2种组合,在密码核对正确之前,读这两地址的结果是“00”,也无法写入和更改;在密码核对正确后可以读出密码和更改密码,密码会一直有效至卡掉电为止。   7.7 地址0-7,21-26出厂前由厂家固化,不可更改,其中地址21-26是卡的用户代码,由制造卡的厂家向SIEMENS公司申请注册的全球唯一的用户代码。      2.设计原则      针对SLE4428安全性的局限性,必须采用以下原则发行和使用SLE4428逻辑加密卡:   2.1生成密钥文件。该文件为二进制加密文件,由用户方提供的算法种子经过加密算法,生成用户卡密钥所需要的算法种子(以下简称密钥种子)和加密用户卡数据所需要的加密种子。   2.2用密文方式存储用户卡重要数据,使其它系统无法读出卡上内容,从而保护用户   的隐私。   2.3用户卡的改写必须经过以下操作:调用密钥文件中的密钥种子,通过加密算法校验   用户卡密钥,如果正确就可以进行改写,如果不正确,SLE4428将记数,超过8次不正确,SLE4428将自动锁死,从而避免用穷尽法破译用户卡密钥。      3.设计流程      3.1发行用户新卡   3.1.1 建立用户对象u_maker 和定义SLE4428的驱动程序hnic32.dllu_maker主要   由以下密钥函数组成(函数源程序略)。   3.1.2 定义用户对象u_maker,生成用户卡密码,读密钥文件并将第一套两条密钥分别   存于ls_key[1]和ls_key[2]中,程序如下:(为减少篇幅,程序只列出主要部分)   u_maker u_maker1 //定义OBJECT   u_maker1 = create u_maker   li_aret=u_maker1.uf_getkey() //读密钥文件   int li_min,li_sec,li_mul   char ls_pas[]   string ls_random,ls_pin_new   li_sec=integer(mid(string(now()),7,2)) //产生随机数   if li_sec=0 then    li_sec=rand(99)   End if   li_min=integer(mid(string(now()),4,2))   if li_min=0 then    li_min=rand(99)   End if   li_mul=li_sec*li_min   ls_random = left(string(li_mul),2)   ls_pas = u_maker1.uf_encrypt(ls_random,u_maker1.ls_key[1]) //生成用户卡密码   ls_pin_new = u_maker1.uf_asctostr(ls_pas)   3.1.3 从数据库文件中读取需要的数据并写入结构变量istr_info1中,具体如下:   istr_info1.grzhbh,istr_info1.FXSDM,str_info1.ICKH,istr_info1.BXH,istr_info1.XM,istr_info1.XB,istr_info1.CSRQ1,istr_info1.SFZHM,istr_info1.CBRYLBDM,istr_info1.BNYBMZLJ,istr_info1.YBMZLJ,istr_info1.YYBM,istr_info1.YYMC,istr_info1.BNZYCS,istr_info1.IN_HOS_MON,istr_info1.IN_HOS_SUM,istr_info1.IC

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档