IOS下RSA&base64与Java端加密解密备忘

这几天在给游戏对接GameCenter,主要是为了方便广大欧美的朋友们玩游戏不用注册账号,一开即玩


GameCenter严格意义上面来说它并不能作为手机网游的通行证,看了下官方文档,GameCenter并不对外提供Token以及身份验证的接口


但是为了方便玩家还是顺便把它当做一个PassPort来使用了,至于游戏服务器如何对客户端进行身份验证,这里可能不同的开发者都会给出不同的方案,当然安全好用就行了


我们采用的方案是使用GameCenter的玩家的userID以+通行证服务器系统时间进行RSA加密和Base64编码之后传给游戏服务器,游戏服务器经过解码和RSA解密,再凭获取到的系统时间与通行证服务器进行验证,然后响应客户端是否能够通过身份验证。


在这里备注一下这个过程中的几个关键点:


1. 在Mac下制作自签名的证书

1)创建私钥

openssl genrsa -out private_key.pem 1024

2)创建证书请求(按照提示输入信息)

openssl req -new -out cert.csr -key private_key.pem

3)自签署根证书

openssl x509 -req -in cert.csr -out public_key.der -outform der -signkey private_key.pem -days 3650

2. IOS下RSA加密之后的十六进制数据需要进行byte转换之后base64才能被java端解密出来

RSA加密后的十六进制示例:

<23ac0e67 4f244c65 dfe855a5 fc4e660d 83c531a2 b5826e0d bced9da7 44d90b9e f2aa418c 2454072f b0735b5d 54355673 e30a429f 2f4e3908 1ba16597 2488cffa d260b9c3 6187c991 a2857782 65e35b37 5f7812fe 7e0763fc 60ed5e48 96366474 a7f80401 868a26b5 680a04f5 262021f1 65c4d9a5 c059f707 9f22813c 00e886dc>


byte转换:

Byte *t_pEncryptStrByte = (Byte *)[t_pEncryptData bytes];

RSA相关知识参考:http://blog.iamzsx.me/show.html?id=155002

GameCenter官方文档:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/GameKit_Guide/Introduction/Introduction.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值