您的位置:首页 > 编程语言 > Java开发

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

2015-01-27 23:18 543 查看
这几天在给游戏对接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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios开发 GameCenter RSA