Với
- Pha mã hóa:
$c = m \oplus k$ (phép$\oplus$ là phép XOR) - Pha giải mã:
$m = c \oplus k$
Chú ý là làm cách này không cần tìm
c, m, k = 6, 9, 11
c1 = m ^ k
m1 = c1 ^ k
print(m, m1)
9 9
- Đơn vị của
$l =$ unit (bit) => Stream cipher (mã dòng) - Đơn vị của
$l \neq$ unit (bit) => Block cipher (mã khối)
$c_i \equiv E(m_i, k)$
-
$c_0 =$ i.v (initial value, cho đại) $c_1 = E(m_1, k) \oplus c_0$ - ...
$c_i = E(m_i, k) \oplus c_{i - 1} (1 \leq i \leq n)$
Giải mã: làm ngược lại
$m_i = D(m_i, k) \oplus c_{i - 1}$
-
$c_0 = \text{i.v}$ (initial value, cho đại) $c_i = E(m_i \oplus c_{i - 1} \oplus m_{i - 1}, k)$
-
$c_0 = \text{i.v}$ (initial value, cho đại) $c_i = m_i \oplus E(c_{i - 1}, k)$
(mã hóa key)
$y_0 = E(\text{iv}, k)$ $c_i = m_i \oplus E(y_{i - 1}, k)$
- iv = token
$c_i = m_i \oplus E(\text{iv} + g(i), k)$ -
$g(i)$ là biến đếm
- (R1) Thay thế:
$b_0..b_l \xrightarrow{\text{sub (thay thế)}}b'_0..b'_l$ - (R2) Hoán vị: $b_0..b_l \xrightarrow{\text{per (hoán vị)}}b'_0..b'l: b_i = b'{\sigma(i)}$
Cho
- hàm mã hóa
$E(M, A) = AM \pmod p$ - hàm giải mã
$D(M, A) = A^{-1}M \pmod p$
Chú ý: Ma trận
- Mệnh đề 1: Ma trận khả nghịch khi định thức khác 0.
- Mệnh đề 2: Định thức ma trận tam giác trên (upper-triangular matrix) và định thức ma trận tam giác dưới (lower-triangular matrix) bằng tích các phần tử trên đường chéo.
- Mệnh đề 3:
$det(AB) = det(A)det(B)$
- Tạo
$U, L$ lần lượt là 2 ma trận tam giác trên và tam giác dưới có định thức khác 0. - Khóa
$K = LU$ . - Vì bản thân
$K$ khả nghịch, nên$KK^{-1} = I_n$ Ta giải hệ sau:
-
$LY = E$ ($E$ là ma trận đơn vị) $UX = Y$
khi đó
Đây chỉ là tóm tắt, bản thân mỗi phần nhân ma trận lại có cách làm nhanh.