【转】国密算法sm4 CBC模式加解密
一.什么是CBC模式?
CBC模式的全稱是Cipher Block Chaining模式(密文分組鏈接模式),之所以叫這個(gè)名字,是因?yàn)槊芪姆纸M像鏈條一樣相互連接在一起。
在CBC模式中,首先將明文分組與前一個(gè)密文分組進(jìn)行異或運(yùn)算,然后再進(jìn)行加密。
異或運(yùn)算:
異或,英文為exclusive OR,縮寫成xor
異或(xor)是一個(gè)數(shù)學(xué)運(yùn)算符。它應(yīng)用于邏輯運(yùn)算。異或的數(shù)學(xué)符號(hào)為“⊕”,計(jì)算機(jī)符號(hào)為“xor”。其運(yùn)算法則為:
a⊕b = (?a ∧ b) ∨ (a ∧?b)
如果a、b兩個(gè)值不相同,則異或結(jié)果為1。如果a、b兩個(gè)值相同,異或結(jié)果為0。
異或也叫半加運(yùn)算,其運(yùn)算法則相當(dāng)于不帶進(jìn)位的二進(jìn)制加法:二進(jìn)制下用1表示真,0表示假,則異或的運(yùn)算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進(jìn)位,所以異或常被認(rèn)作不進(jìn)位加法。
異或略稱為XOR、EOR、EX-OR
程序中有三種演算子:XOR、xor、⊕。
使用方法如下
z = x ⊕ y
z = x xor y
二.CBC模式加解密過程如下:
1.加密過程例如以下:
2. 解密密過程例如以下:
這里注意一點(diǎn),解密的結(jié)果并不一定是我們?cè)瓉淼募用軘?shù)據(jù),可能還含有你補(bǔ)得位。一定要把補(bǔ)位去掉才是你的原來的數(shù)據(jù)。
三.CBC模式特點(diǎn)
- cbc模式在進(jìn)行加密之前一定會(huì)與前一個(gè)密文組進(jìn)行異或運(yùn)算,因此即使明文D1與明文D2值相等,密文C1與密文C2也不一定是相等的
- cbc模式無法單獨(dú)的對(duì)一個(gè)明文組進(jìn)行加密,必須有前一個(gè)密文組,第一個(gè)密文組依賴于IV產(chǎn)生
- 解密時(shí)如果其中一個(gè)密文組損壞,只要密文分組的長(zhǎng)度沒有發(fā)生變化,則解密時(shí)最多只有2個(gè)分組受到數(shù)據(jù)損壞的影響
- 資源下載地址?https://download.csdn.net/download/qq_27969037/11327461
總結(jié)
以上是生活随笔為你收集整理的【转】国密算法sm4 CBC模式加解密的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】SVN各种颜色状态
- 下一篇: Sharepoint学习笔记 –架构系列