最近公司一个项目对接到银行的相关接口, 结合我之前的工作经历,很想记录下对于安全机制的一个小理解。仅供学习参考,不对之处请见谅。
在这里以一个登录为示例:
第一步: 自定义加密生成公钥私钥
登录用户输入的用户名密码首先用一个数组加密形式进行Encode
String [] encodestr= {z,h,u,d,e,f,1,2,3…};
String [] encode = {h,a,o,q,r,t,7,8,9…};
做自定义的转换,username 是zhu转后为 hao
password也是一样
对传输报文内容进行一个拼接,加上一个定义好的规范,
username+password+publicKey+“自定义String"MD5加密
服务端得到的报文可能是这样的:
{“username”:“hao”,“password”:“123”,“publicKey”:“123”,“md5”,”*******"}
服务端首先对username和password 进行数组转换, 将hao转为zhu
在对整体的报文进行拼接, 加上定好的String MD5格式, 和报文中的md5 进行对比,验证报文在传输过程中没有被劫持串改
第二歩:非对称加密解密