對稱加密

  • 對稱加密的特點
    1)加密/解密使用相同的密鑰
    2)加密和解密的過程是可逆的(明文->密文->明文)
    對稱加密和解密
  • 缺點
    無法保證密鑰傳輸過程的安全問題
  • 經(jīng)典算法
    1)DES 數(shù)據(jù)加密標準
    2)3DES 使用3個密鑰,對消息進行(密鑰1·加密)+(密鑰2·解密)+(密鑰3·加密)
    3)AES 高級加密標準
  • 對稱加密的密碼算法
    密碼算法可以分為分組密碼流密碼兩種。
    分組密碼 :每次只能處理特定長度的一zu數(shù)據(jù)的一類密碼算法。一個分組的比特數(shù)量就稱之為分組長度。
    例如:
    DES和3DES的分組長度都是64比特。即每次只能加密64比特的明文,并生成64比特的密文。
    AES的分組長度有128比特、192比特和256比特可以選擇。
    流密碼 :對數(shù)據(jù)流進行連續(xù)處理的一類算法。
    流密碼中一般以1比特、8比特或者是32比特等作為單位倆進行加密和解密。
  • ECB分組模式
    ECB模式的全稱為Electronic CodeBook模式。又成為電子密碼本模式,每個塊都是獨立加密的。
    特點:
    1)使用ECB模式加密的時候,相同的明文分組 會被轉(zhuǎn)換為 相同的密文分組
    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)對數(shù)據(jù)執(zhí)行加密轉(zhuǎn)換,可以有效地保證密文的完整性
    特點:在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";
    //加密
/*
     第一個參數(shù):要加密的明文(字符串)
     第二個參數(shù):共享密鑰
     第三個參數(shù):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(數(shù)據(jù)加密標準)-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(數(shù)據(jù)加密標準)-CBC 加密&解密

DES-CBC的加密和解密方式參見AES-CBC的加密和解密,不過在加密或者解密之前,先要修改加密方式為DES
    EncryptionTools * encry = [EncryptionTools sharedEncryptionTools];
    encry.algorithm = kCCAlgorithmDES;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 對稱加密算法,即加密和解密使用一樣的密鑰的加解密算法。分組密碼(block cipher),是每次只能處理特定長度...
    linjinhe閱讀 12,254評論 3 16
  • 1、簡介對稱加密算法又稱傳統(tǒng)加密算法。加密和解密使用同一個 密鑰。 1.1對稱加密算法示例密鑰:X加密算法:每個字...
    6ffd6634d577閱讀 3,103評論 0 2
  • 介紹 加密和解密都使用同一把秘鑰,這種加密方法稱為對稱加密,也稱為單密鑰加密。簡單理解為:加密解密都是同一把鑰匙 ...
    Blizzard_liu閱讀 937評論 0 1
  • 對稱加密 - 傳統(tǒng)加密算法##加密和解密使用同一個"密鑰"!密鑰的保密工作就非常的重要!! 密鑰會定期更換!密鑰的...
    Maple_Xu閱讀 1,371評論 0 3
  • 越來越不會愛自己了。我的性格要不就很軟弱。要不就亂發(fā)脾氣。總是不合群。 小的時候很胖。記得二年級的時候。我爺爺死后...
    梵翊閱讀 158評論 0 0

友情鏈接更多精彩內(nèi)容