最近正在做一个游戏服务器框架的LoginServer的用户信息校验模块。这种校验模块一般都分为两部分,字节串校验解密和数据库数据查询相关。数据库数据查询我比较熟,但是字节串校验解密倒是第一次做。使用OpenSSL,搞了两天才全部搞定。
这个过程,总算将大学里学习的一些基础的密码学知识给捡了回来,而且有了更深层次的体会。我相信,如果大学里老师不是照本宣科,让我们在实际中使用一下OpenSSL的库,编编程序,我相信,我绝不会将他教给我的密码学知识全部换给他。这里记录一下,也让还在大学学习密码学的同学了解一下业界是如何使用密码学里的知识的。
首先回顾一下几个知识点。
什么是OpenSSL?
OpenSSL是一套软件包,它由Eric A. Young和Tim J. Hudson于1995年开始编写,基本实现了业内所需要的主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。目前,我主要使用的是密码,密钥算法部分。
密码和密钥部分业界使用的主要场景有:“字符串加解密”,“签名”和“字节串校验”三种。
字符串加解密
字符串加解密分为对称加解密和非对称加解密两种。这两种加解密最直观的区别就是对称加解密的加密密钥和解密密钥是一致的;而非对称加解密则不一样,它有公钥和密钥两种,大众使用公钥用于加密,自己使用密钥用于解密。对称加解密最常用的就是DES,它的一个著名的变种是三重DES;非对称加解密最常用的是RSA,非对称加解密耗时是非常长的。
&nb