iOS-获取当前时间的时间戳

最近公司要求在请求参数里面加入时间戳,进行防止重放攻击。

如果客户端在向服务端接口进行请求,如果请求信息进行了加密处理,被第三方截取到请求包,虽然第三方无法解密获取其中的数据,但是可以使用该请求包进行重复的请求操作。如果服务端不进行防重放攻击,就会参数服务器压力增大,数据紊乱的后果。而使用添加时间戳的方式可以解决这一问题。

什么是时间戳?

时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。

//获取当前时间的时间戳
-(NSString*)getCurrentTimestamp{
NSDate* data= [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval interval=[data timeIntervalSince1970];
NSString *timeString = [NSString stringWithFormat:@”%0.f”, interval];//转为字符型
return timeString;
}
首先 [[NSDate date] timeIntervalSince1970] 是可以获取到后面的毫秒 微秒的 ,只是在保存的时候省略掉了, 如一个时间戳不省略的情况下为 1395399556.862046 ,省略掉后为一般所见 1395399556 。所以想取得毫秒时用获取到的时间戳 *1000 ,想取得微秒时 用取到的时间戳 * 1000 * 1000。
这个取到毫秒和微秒需要根据自己的需求定。
分享到: 更多