Update main.cpp
This commit is contained in:
44
main.cpp
44
main.cpp
@@ -6,27 +6,27 @@ int main() {//g++ AES.cpp main.cpp -o program
|
|||||||
|
|
||||||
ios_base::fmtflags original_flags = cout.flags();
|
ios_base::fmtflags original_flags = cout.flags();
|
||||||
int BlockSize = 16;
|
int BlockSize = 16;
|
||||||
//shiftrow & invshiftrow & sub & Invsub 完成測試
|
//shiftrow & invshiftrow & sub & Invsub 完成測試
|
||||||
|
|
||||||
cout << "此程式支援Base64編碼、ECB、與pkcs7填充\n";
|
cout << "此程式支援Base64編碼、ECB、與pkcs7填充\n";
|
||||||
cout << "密鑰僅支援128位\n";
|
cout << "密鑰僅支援128位\n";
|
||||||
while (1) {
|
while (1) {
|
||||||
cout << "===============================請選擇功能===============================\n";
|
cout << "===============================請選擇功能===============================\n";
|
||||||
cout << " 0.encrypt加密\n";
|
cout << " 0.encrypt加密\n";
|
||||||
cout << " 1.decrypt解密\n";
|
cout << " 1.decrypt解密\n";
|
||||||
cout << "輸入你的選擇(0/1)\n";
|
cout << "輸入你的選擇(0/1)\n";
|
||||||
int en_or_de;
|
int en_or_de;
|
||||||
cin >> en_or_de;
|
cin >> en_or_de;
|
||||||
if (!en_or_de) {//en
|
if (!en_or_de) {//en
|
||||||
int textLength;
|
int textLength;
|
||||||
cout << "===============================明文格式=================================\n";
|
cout << "===============================明文格式=================================\n";
|
||||||
cout << " 0.字節儲存(就是常見的1byte儲存一個)\n";
|
cout << " 0.字節儲存(就是常見的1byte儲存一個)\n";
|
||||||
cout << " 1.Base64編碼(會先轉為字節儲存再加密)\n";
|
cout << " 1.Base64編碼(會先轉為字節儲存再加密)\n";
|
||||||
cout << "輸入你的選擇(0/1)\n";
|
cout << "輸入你的選擇(0/1)\n";
|
||||||
int ch_or_ba;
|
int ch_or_ba;
|
||||||
cin >> ch_or_ba;
|
cin >> ch_or_ba;
|
||||||
|
|
||||||
cout << "----請輸入明文----\n";
|
cout << "----請輸入明文----\n";
|
||||||
|
|
||||||
string tmp;
|
string tmp;
|
||||||
cin.ignore();
|
cin.ignore();
|
||||||
@@ -42,12 +42,12 @@ int main() {//g++ AES.cpp main.cpp -o program
|
|||||||
unsigned char *plaintext = new unsigned char[textLength];
|
unsigned char *plaintext = new unsigned char[textLength];
|
||||||
for (int i = 0; i < textLength; i++) { plaintext[i] = tmp[i]; }
|
for (int i = 0; i < textLength; i++) { plaintext[i] = tmp[i]; }
|
||||||
|
|
||||||
cout << "明文填充後的16進位: ";
|
cout << "明文填充後的16進位: ";
|
||||||
for (const auto& item : tmp) {
|
for (const auto& item : tmp) {
|
||||||
cout << hex << setw(2) << setfill('0') << (0xFF & static_cast<unsigned int>(item)) << ' ';
|
cout << hex << setw(2) << setfill('0') << (0xFF & static_cast<unsigned int>(item)) << ' ';
|
||||||
}cout << "\n\n"; cout.flags(original_flags);
|
}cout << "\n\n"; cout.flags(original_flags);
|
||||||
|
|
||||||
cout << "----請輸入密鑰(字節儲存128bit)----\n";
|
cout << "----請輸入密鑰(字節儲存128bit)----\n";
|
||||||
unsigned char key[16];
|
unsigned char key[16];
|
||||||
getline(cin, tmp);
|
getline(cin, tmp);
|
||||||
for (int i = 0; i < 16; i++) { key[i] = tmp[i]; }
|
for (int i = 0; i < 16; i++) { key[i] = tmp[i]; }
|
||||||
@@ -59,21 +59,21 @@ int main() {//g++ AES.cpp main.cpp -o program
|
|||||||
string tt;
|
string tt;
|
||||||
tt.resize(textLength);
|
tt.resize(textLength);
|
||||||
for (int i = 0; i < textLength; i++) { tt[i] = ciphertext[i]; }
|
for (int i = 0; i < textLength; i++) { tt[i] = ciphertext[i]; }
|
||||||
cout << "\n密文(16進位): ";
|
cout << "\n密文(16進位): ";
|
||||||
for (const auto& item : tt) {
|
for (const auto& item : tt) {
|
||||||
cout << hex << setw(2) << setfill('0') << (0xFF & static_cast<unsigned int>(item)) << ' ';
|
cout << hex << setw(2) << setfill('0') << (0xFF & static_cast<unsigned int>(item)) << ' ';
|
||||||
}cout << '\n'; cout.flags(original_flags);
|
}cout << '\n'; cout.flags(original_flags);
|
||||||
|
|
||||||
tt = Base64_encode(tt);
|
tt = Base64_encode(tt);
|
||||||
cout <<"密文(Base64): " << tt << "\n\n";
|
cout <<"密文(Base64): " << tt << "\n\n";
|
||||||
|
|
||||||
delete[] plaintext;
|
delete[] plaintext;
|
||||||
delete[] ciphertext;
|
delete[] ciphertext;
|
||||||
}
|
}
|
||||||
else if (en_or_de) {//de
|
else if (en_or_de) {//de
|
||||||
int textLength;
|
int textLength;
|
||||||
cout << "===============================密文僅支持Base64============================\n";
|
cout << "===============================密文僅支持Base64=========================\n";
|
||||||
cout << "請輸入Base64編碼的密文\n";
|
cout << "請輸入Base64編碼的密文\n";
|
||||||
string tmp;
|
string tmp;
|
||||||
cin.ignore();
|
cin.ignore();
|
||||||
getline(cin, tmp);
|
getline(cin, tmp);
|
||||||
@@ -85,7 +85,7 @@ int main() {//g++ AES.cpp main.cpp -o program
|
|||||||
for (int i = 0; i < textLength; i++) {
|
for (int i = 0; i < textLength; i++) {
|
||||||
ciphertext[i] = tmp[i];
|
ciphertext[i] = tmp[i];
|
||||||
}
|
}
|
||||||
cout << "\n----請輸入密鑰(字節儲存128bit)----\n";
|
cout << "\n----請輸入密鑰(字節儲存128bit)----\n";
|
||||||
unsigned char key[16];
|
unsigned char key[16];
|
||||||
getline(cin, tmp);
|
getline(cin, tmp);
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
@@ -105,12 +105,12 @@ int main() {//g++ AES.cpp main.cpp -o program
|
|||||||
pkcs7_unpadding(tt);
|
pkcs7_unpadding(tt);
|
||||||
textLength = tt.size();
|
textLength = tt.size();
|
||||||
|
|
||||||
cout << "\n解密結果(16進位): ";
|
cout << "\n解密結果(16進位): ";
|
||||||
for (const auto& item : tt) {
|
for (const auto& item : tt) {
|
||||||
cout << hex << setw(2) << setfill('0') << (0xFF & static_cast<unsigned int>(item)) << ' ';
|
cout << hex << setw(2) << setfill('0') << (0xFF & static_cast<unsigned int>(item)) << ' ';
|
||||||
}cout << '\n'; cout.flags(original_flags);
|
}cout << '\n'; cout.flags(original_flags);
|
||||||
|
|
||||||
cout << "解密結果(自節儲存): ";
|
cout << "解密結果(自節儲存): ";
|
||||||
for (int i = 0; i < textLength; i++) {
|
for (int i = 0; i < textLength; i++) {
|
||||||
cout << plaintext[i];
|
cout << plaintext[i];
|
||||||
}cout << "\n\n";
|
}cout << "\n\n";
|
||||||
@@ -119,4 +119,4 @@ int main() {//g++ AES.cpp main.cpp -o program
|
|||||||
delete[] ciphertext;
|
delete[] ciphertext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user