美文网首页
对称加密

对称加密

作者: Mario_ZJ | 来源:发表于2016-10-19 15:18 被阅读46次
    • 对称加密的特点
      1)加密/解密使用相同的密钥
      2)加密和解密的过程是可逆的(明文->密文->明文)
      对称加密和解密
    • 缺点
      无法保证密钥传输过程的安全问题
    • 经典算法
      1)DES 数据加密标准
      2)3DES 使用3个密钥,对消息进行(密钥1·加密)+(密钥2·解密)+(密钥3·加密)
      3)AES 高级加密标准
    • 对称加密的密码算法
      密码算法可以分为分组密码流密码两种
      分组密码 :每次只能处理特定长度的一zu数据的一类密码算法。一个分组的比特数量就称之为分组长度。
      例如:
      DES和3DES的分组长度都是64比特。即每次只能加密64比特的明文,并生成64比特的密文。
      AES的分组长度有128比特、192比特和256比特可以选择。
      流密码 :对数据流进行连续处理的一类算法。
      流密码中一般以1比特、8比特或者是32比特等作为单位俩进行加密和解密。
    • ECB分组模式
      ECB模式的全称为Electronic CodeBook模式。又成为电子密码本模式,每个块都是独立加密的。
      特点:
      1)使用ECB模式加密的时候,相同的明文分组 会被转换为 相同的密文分组
      2)类似于一个巨大的明文分组->密文分组的对照表。
    ECB分组模式的加密和解密
    • 终端测试命令
      加密 $ openssl enc -des-ecb -K 616263 -nosalt -in 123.txt -out 123.bin
      解密 $ openssl enc -des-ecb -K 616263 -nosalt -in 123.bin -out 1231.txt -d

    • CBC分组模式
      CBC模式全称为Cipher Block Chainning模式(密文分组链接模式|电子密码链条),使用一个密钥和一个初始化向量 (IV)对数据执行加密转换,可以有效地保证密文的完整性
      特点:在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。

    CBC分组模式的加密和解密
    • 终端测试命令
      加密 $ openssl enc -des-cbc -K 616263 -iv 0102030405060708 -nosalt -in a.txt -out a.bin
      解密 $ openssl enc -des-cbc -K 616263 -iv 0102030405060708 -nosalt -in a.bin -out a1.txt -d

    • 示例代码:
      **注意 : **
      1> 加密过程是先加密,再base64编码
      2> 解密过程是先base64解码,再解密
      AES(高级加密标准,默认128位)-ECB 加密&解密

        NSString * string = @"handsome";
        NSString * key = @"cute";
        //加密
    /*
         第一个参数:要加密的明文(字符串)
         第二个参数:共享密钥
         第三个参数:nil (初始向量)
         */
        NSString * encodeStr = [[EncryptionTools sharedEncryptionTools] encryptString:string keyString:key iv:nil];
        NSLog(@"%@",encodeStr);
        //解密
        NSString * decodeStr = [[EncryptionTools sharedEncryptionTools] decryptString:encodeStr keyString:key iv:nil];
        NSLog(@"%@",decodeStr);
    

    AES(高级加密标准,默认128位)-CBC 加密&解密

        //加密
        uint8_t iv[8] = {'a','c','d','e','f','g','h'};
        NSData * data = [NSData dataWithBytes:iv length:sizeof(iv)];
        NSString * encodeStr1 = [[EncryptionTools sharedEncryptionTools] encryptString:string keyString:key iv:data];
        NSLog(@"%@",encodeStr1);
        //解密
        NSString * decodeStr1 = [[EncryptionTools sharedEncryptionTools] decryptString:encodeStr1 keyString:key iv:data];
        NSLog(@"%@",decodeStr1);
        ```
    **DES(数据加密标准)-ECB 加密&解密**
        ```
        //注意,如果想要通过DES的方式进行加密,解密,需要修改加密方式
    //修改加密方式为DES
        EncryptionTools * encry = [EncryptionTools sharedEncryptionTools];
        encry.algorithm = kCCAlgorithmDES;
    //加密
        NSString * encodeStr2 = [[EncryptionTools sharedEncryptionTools] encryptString:string keyString:key iv:nil];
        NSLog(@"%@",encodeStr2);
    //解密
        NSString * decodeStr2 = [[EncryptionTools sharedEncryptionTools] decryptString:encodeStr2 keyString:key iv:nil];
        NSLog(@"%@",decodeStr2);
    

    DES(数据加密标准)-CBC 加密&解密

    DES-CBC的加密和解密方式参见AES-CBC的加密和解密,不过在加密或者解密之前,先要修改加密方式为DES
        EncryptionTools * encry = [EncryptionTools sharedEncryptionTools];
        encry.algorithm = kCCAlgorithmDES;
    

    相关文章

      网友评论

          本文标题:对称加密

          本文链接:https://www.haomeiwen.com/subject/ebjwettx.html