摘要
1.HASH概述
2.密码加密
3.数字签名
4.对称加密
HASH概述:
HMAC的key值是每个用户都是不同,且是服务器给的,可以定时跟新,每个key值是用户在注册的时候,服务器给的,登录成功后,存在本地。如果换设备登录的时候,如果跟原设备绑定的话,可以找原设备授权以后,再给新设备key,如果登录成功后,再保存在本地。安全方案可以在数据哈希值 后面 加上服务器的时间戳后,再进行md5加密,保证用户必须在2规定的时间内登录才是安全的,hmac是一次密钥加密2次散列的特性。
数字签名
客户端把数据的哈希值用RSA公钥加密后连同数据,一起以二进制的形式发送给服务器,如果服务器收到数据是,把数据生成哈希值,再用私钥解密发送来的数据哈希值,如果2个哈希值一样,那么证明数据没有被篡改,如果不一致则说明数据被篡改了,这就是数字签名的原理。
对称加密
代码使用DES 或者 AES 加密
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//iv 为nil ebc 独立密码本 iv不为nil cbc模式
//加密
// /** AES EBC */
// NSString * key = @"adc";
// NSString * encString = [[EncryptionTools sharedEncryptionTools] encryptString:@"hello" keyString:key iv:nil];
// NSLog(@"加密的内容:%@",encString);
// //解密
// NSLog(@"解密的内容:%@",[[EncryptionTools sharedEncryptionTools] decryptString:encString keyString:key iv:nil]);
/** AES CBC */
NSString * key = @"adc";
uint8_t iv[8] = {1,2,3,4,5,6,7,8};
NSData * ivData = [NSData dataWithBytes:iv length:sizeof(iv)];
NSString * encString = [[EncryptionTools sharedEncryptionTools] encryptString:@"hello" keyString:key iv:ivData];
NSLog(@"加密的内容:%@",encString);
//解密
NSLog(@"解密的内容:%@",[[EncryptionTools sharedEncryptionTools] decryptString:encString keyString:key iv:ivData]);
}