最近公司项目启动,针对登录模拟auth2.0模式,需要用到AES加解密,RSA私钥签名,公钥验签,RSA加解密等功能,对AES RSA这2块进行了综合整理了一下。
AES 后台那边要求是 CBC模式,并且用0x00填充模式,不多说上代码:


代码里设置密码跟iv偏移量一样,因为如果服务端的密码包含特殊字符的话,客户端这边解析出来的数据开头部分是乱码。
//初始密钥长度
size_t const kKeySize = kCCKeySizeAES128; 代表是AES128位进行加解密。
下面说谁RSA加解密,由于架构设计需要用户每次登录的RSA公私钥都不一样,这就要求前端每次登录的时候动态生成一对公私钥,用系统的API是可以获取到公私钥,但是我们需要把公私钥转换成字符串,这样系统API就不能满足我们的要求,我这边用openssl来动态生成RSA公私钥,可以参照支付宝公私钥匙加密和签名。
下面上RSA加解密:

RSA私钥签名和公钥验证:


写的有点乱,下面给整个的Demo。
网友评论