对称加密

你好,我是Emma,对称加密初探ing。

对称加密
明文-》 密钥 -》密文
密文-》 密钥 -》明文

  • DES 数据加密标准 用的少是强度不够。
  • 3DES 只是简单的加强了密钥的强度,但是密钥的保护手段变的更加难。用的比较少
  • AES 高级加密标准 eg:钥匙串

应用模式:

1.ECB
2.CBC 密码分组链接模式 , 还需要一个初始化的向量
保证数据完整性:应用场景防止别人窃听。
为啥要这个向量呢?
集合中的向量多变性。

1.ECB方式:

mkdir 加密文件夹
vi abc.txt
按键:i进入编辑模式-》 进入之后打一堆数字,点击esc-》光标订到有字的一行,按‘yy’,到下一行点击'p',按:wq退出。

openssl enc -des-ecb -K 616263 -nosalt -in abc.txt -out msg1.bin
xxd msg1.bin
1
2

每八个字节为一块,因为是64位。

2.CBC 密码分组链接模式

6
openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt -in abc.txt -out msg5.bin
xxd msg5.bin
7
openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt -in abc.txt -out msg6.bin
xxd msg6.bin
8

TODO思考:

5
openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt -in abc.txt -out msg3.bin
xxd msg3.bin
4
openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt -in abc.txt -out msg4.bin
xxd msg4.bin
3

为什么这个只有两块进行了关联?多加一行的情况下就是三个块进行了关联?

    //AES -- ECB 加密
    NSString * key = @"abc";
    NSLog(@"加密的结果:%@",[[EncryptionTools sharedEncryptionTools] encryptString:@"hello" keyString:key iv:nil]);
    // 解密 : d1QG4T2tivoi0Kiu3NEmZQ==
    NSLog(@"解密之后的结果:%@",[[EncryptionTools sharedEncryptionTools] decryptString:@"d1QG4T2tivoi0Kiu3NEmZQ==" keyString:key iv:nil]);

输出结果:

2019-07-18 16:33:39.848656+0800 对称加密算法那[1289:600762] 加密的结果:d1QG4T2tivoi0Kiu3NEmZQ==
2019-07-18 16:33:39.848733+0800 对称加密算法那[1289:600762] 解密之后的结果:hello

验证:

9
NSString * key = @"abc";
uint8_t iv[8] = {1,2,3,4,5,6,1,0};
NSData * ivDate = [NSData dataWithBytes:iv length:sizeof(iv)];
NSString * pwd =  [[EncryptionTools sharedEncryptionTools] encryptString:@"hello" keyString:key iv:ivDate];
NSLog(@"%@",pwd);
NSString * dpwd = [[EncryptionTools sharedEncryptionTools] decryptString:@"4izoPUtnuM1Jsc5uQkDQyw==" keyString:key iv:ivDate];
NSLog(@"%@",dpwd);

输出结果:

2019-07-18 16:44:45.461009+0800 对称加密算法那[1295:603753] 4izoPUtnuM1Jsc5uQkDQyw==
2019-07-18 16:44:45.461112+0800 对称加密算法那[1295:603753] hello

终端验证:

10
 CCCrypt 对称加密算法核心函数(加密/解密)
 参数:
 1.kCCEncrypt 加密/kCCDecrypt 解密
 2.加密算法,默认是AES
 3.加密方案:ECB/CBC
    kCCOptionPKCS7Padding                       CBC加密
    kCCOptionPKCS7Padding | kCCOptionECBMode    ECB加密
 
 4.加密密钥
 5.密钥长度
 6.iv 初始化向量,ECB不需要指定
 7.加密的数据
 8.加密的数据的长度
 9.密文的内存地址
 10.密文缓冲区的大小
 11.加密结果大小

参考链接:

1.EncryptionTools
2.Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)

你可能感兴趣的:(对称加密)