ECB模式详解
ECB模式(電子密碼本模式)
在ECB模式中,將明文分組加密之后的結(jié)果直接作為密文分組,缺點(diǎn)是會容易攻擊,因?yàn)槊魑南嗤拿芪南嗤?/p>
目錄
我們可以將其理解為是一個(gè)巨大的"明文分組→密文分組"的對應(yīng)表
ECB模式下的加解密過程
ECB模式的優(yōu)缺點(diǎn)
編輯 ECB模式作為一種基本工作模式,具有操作簡單,易于實(shí)現(xiàn)的特點(diǎn)。同時(shí)由于其分組的獨(dú)立性,利于實(shí)現(xiàn)并行處理,并且能很好地防止誤差傳播。 另一方面由于所有分組的加密方式一致,明文中的重復(fù)內(nèi)容會在密文中有所體現(xiàn),因此難以抵抗統(tǒng)計(jì)分析攻擊。 因此,ECB模式一般只適用于小數(shù)據(jù)量的字符信息的安全性保護(hù),例如密鑰保護(hù)。ECB模式優(yōu)點(diǎn):
1. 簡單
2.?有利于并行計(jì)算
3.?誤差不會被傳送
?
ECB模式缺點(diǎn):
1.?不能隱藏明文的模式
2.?可能對明文進(jìn)行主動攻擊
?
對ECB模式的攻擊,截圖來源自圖解密碼技術(shù)一書:
?
ECB模式的加密:
#include <STRING.H>#define IN #define OUT//假設(shè)加密分組為4字節(jié)一組/************************************************************************** *功 能: 加密算法 (與Key異或) *參 數(shù): lpszData 當(dāng)前明文分組數(shù)據(jù) * lpszKey Key * lpszDeData 加密后的結(jié)果 * *返回值: **************************************************************************/ void Encrypt(IN const char *lpszData, IN const char *lpszKey, OUT char *lpszEnData) {int i = 0;for (i = 0; i < 4; i++){lpszEnData[i] = lpszData[i] ^ lpszKey[i];} }/************************************************************************** *功 能: 解密算法 (再次異或還原明文) *參 數(shù): lpszData 當(dāng)前密文分組數(shù)據(jù) * lpszKey Key * lpszDeData 解密后的結(jié)果 * *返回值: **************************************************************************/ void Decrypt(IN const char *lpszData, IN const char *lpszKey, OUT char *lpszDeData) {int i = 0;for (i = 0; i < 4; i++){lpszDeData[i] = lpszData[i] ^ lpszKey[i];} }int main(int argc, char* argv[]) {char *lpszData = "Hello World!";char szEnData[16] = {0};char szDeData[16] = {0};char *lpszKey = "1234";int i = 0;printf("原始數(shù)據(jù): %s\r\n", lpszData);while (true){if (strlen(lpszData + i) == 0){break;}Encrypt(lpszData + i, lpszKey, szEnData + i);i += 4;}printf("加密后數(shù)據(jù): %s\r\n", szEnData);i = 0;while (true){if (strlen(szEnData + i) == 0){break;}Decrypt(szEnData + i, lpszKey, szDeData + i);i += 4;}printf("解密后數(shù)據(jù): %s\r\n", szDeData);return 0; }原數(shù)據(jù): Hello World!
加密后: yW_X^d[C^W
解密后: Hello World!
總結(jié)
- 上一篇: android parcelable
- 下一篇: 几种常用的加密方式简单介绍