国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

凱撒密碼——密碼學(xué)

這篇具有很好參考價(jià)值的文章主要介紹了凱撒密碼——密碼學(xué)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

凱撒密碼——密碼學(xué)

?凱撒密碼——密碼學(xué)

凱撒密碼——密碼學(xué)

凱撒密碼——密碼學(xué)

凱撒密碼——密碼學(xué)

凱撒密碼——密碼學(xué)

凱撒密碼——密碼學(xué)

凱撒密碼——密碼學(xué)

凱撒密碼——密碼學(xué)

代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-434299.html

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cmath>
#include<stdio.h>
using namespace std;//定義Caesar類
class Caesar {
private:
	int key;// 移位密鑰
public:
	Caesar(int k) :key(k) {}//構(gòu)造函數(shù)//使用移位密鑰key對(duì)明文字母進(jìn)行加密
	string encrypt(string cleartext) {
		string ciphertext;//加密后密文
		//自行編寫一段代碼,對(duì)明文區(qū)分大小寫進(jìn)行加密,使得最終效果與步驟截圖同   
		for (int i = 0; i < cleartext.length(); i++)
		{
			// 對(duì)小寫字母進(jìn)行加密
			if (cleartext[i] >= 'a' && cleartext[i] <= 'z')
				ciphertext += char((cleartext[i] - 97 + this->key) % 26 + 97);
			// 對(duì)大寫字母進(jìn)行加密
			else if (cleartext[i] >= 'A' && cleartext[i] <= 'Z')
				ciphertext += char((cleartext[i] - 65 + this->key) % 26 + 65);
				
		}
		//返回加密后密文
		return ciphertext;
	}
	//使用窮舉法進(jìn)行破譯
	vector<string>decrypt(string ciphertext)
	{
		vector<string>cleartextSet;//定義解密后的明文信息        
		//解密公式:
		//f(a) = (a + (26 - N)) mod 26//自行編寫一段代碼,窮舉26個(gè)密鑰對(duì)密文區(qū)分大 小寫進(jìn)行解密以此判斷 明文,使得最終效果與步驟截圖同
		// 密鑰為0時(shí),明密文完全相同,直接將密文串進(jìn)行保存
		cleartextSet.push_back(ciphertext);
		// 將其余25個(gè)不同的密鑰進(jìn)行窮舉及解密
		for (int i = 1; i < 26; i++)
		{
			// 用一個(gè)臨時(shí)變量對(duì)解密的后的字符串進(jìn)行保存
			string s;
			for (int j = 0; j < ciphertext.length(); j++)
			{
				//對(duì)密文串中的小寫字母進(jìn)行解密
				if (ciphertext[j] >= 'a' && ciphertext[j] <= 'z')
					s += char((ciphertext[j] - 97 +26-i) % 26 + 97);
				//對(duì)密文串中的大寫字母進(jìn)行解密
				else if (ciphertext[j] >= 'A' && ciphertext[j] <= 'Z')
					s += char((ciphertext[j] - 65 +26 - i) % 26 + 65);
			}
			//將字符串傳入到容器中進(jìn)行保存
			cleartextSet.push_back(s);
		}
		return cleartextSet;
	}
};
int main()
{
	int mode, flag = 1;
	while (flag)
	{
		cout << "---------- Caesar加解密!----------" << endl;
		cout << "請(qǐng)選擇[1->encrypt 2->decrypt 3->exit]" << endl;
		cin >> mode;
		if (mode != 1 && mode != 2 && mode != 3)
		{
			cout << "輸入錯(cuò)誤,請(qǐng)重輸  :[1->encrypt 2->decrypt 3->exit]" << endl;
			cin >> mode;
		}
		if (mode == 1)
		{
			int myKey;
			cout << "輸入移位密鑰: ";
			cin >> myKey;//輸入移位密鑰
			Caesar myCaesar(myKey);
			string cleartext;//待加密的明文
			string ciphertext;//加密后的密文
			cout << "輸入要加密的明文: " << endl;
			getchar();
			getline(cin, cleartext);
			ciphertext = myCaesar.encrypt(cleartext);
			cout << "加密后的密文: " << endl;
			cout << ciphertext << endl;
		}
		else if (mode == 2) {
			vector<string>textset;//用于存放明文
			string ciphertext;//待解密的密文
			Caesar myCaesar(0);
			cout << "輸入要解密的密文: " << endl;
			getchar();
			getline(cin, ciphertext);
			textset = myCaesar.decrypt(ciphertext);
			int k;
			for (k = 0; k < textset.size(); k++) {
				cout << "If (key mod 26) == " << k << ": " << endl;
				cout << textset[k] << endl;
			}
		}
		else {
			return 0;
		}
		cout << "是否繼續(xù)加解密? [0->exit 1 or other->continue]: ";
		cin >> flag;
	}
	return 0;
}

到了這里,關(guān)于凱撒密碼——密碼學(xué)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【密碼學(xué)】python密碼學(xué)庫(kù)pycryptodome

    【密碼學(xué)】python密碼學(xué)庫(kù)pycryptodome

    記錄了一本幾乎是10年前的書(python絕技–用python成為頂級(jí)黑客)中過(guò)時(shí)的內(nèi)容 里面提到了python標(biāo)準(zhǔn)庫(kù)中自帶的crypt庫(kù),經(jīng)驗(yàn)證Python 3.12.1中并沒(méi)有這個(gè)自帶的庫(kù),密碼學(xué)相關(guān)的庫(kù)目前(2024.1.12)是一個(gè)自包含庫(kù)pycryptodome,導(dǎo)入的是 import Crypto pypi庫(kù)的頁(yè)面 可以在文檔中查看詳

    2024年01月17日
    瀏覽(65)
  • 【密碼學(xué)-1】一文入門非對(duì)稱密碼學(xué)

    【密碼學(xué)-1】一文入門非對(duì)稱密碼學(xué)

    本文共1932字,完成閱讀約需6分鐘。 猶記得2021年年初的一波區(qū)塊鏈熱潮讓無(wú)數(shù)人第一次了解到了“公鑰”和“私鑰”的概念,那么,究竟什么是公鑰私鑰呢?和常見(jiàn)的密鑰又有什么區(qū)別和聯(lián)系呢?本文目的在用盡可能短的時(shí)間和簡(jiǎn)潔的語(yǔ)言,帶你快速了解非對(duì)稱密碼學(xué)的基本

    2023年04月08日
    瀏覽(46)
  • 密碼學(xué)基本原理和發(fā)展——古典密碼學(xué)

    密碼學(xué)基本原理和發(fā)展——古典密碼學(xué)

    ? 目錄 1?滾筒密碼 2?棋盤密碼 3?凱撒密碼 4?單表代換與多表代換 4.1?單表代換 4.2?多表代換 ? ? ? ? 密碼技術(shù)最早起源于公元前404年的希臘,此后密碼大致經(jīng)歷了 古典密碼、近代密碼和現(xiàn)代密碼三個(gè)階段。 ? ? ? ? 古典密碼(公元前五世紀(jì)~19世紀(jì)末)代表性的是 滾桶密

    2024年02月05日
    瀏覽(97)
  • 密碼學(xué)基本原理和發(fā)展——近代密碼學(xué)

    密碼學(xué)基本原理和發(fā)展——近代密碼學(xué)

    目錄 1 密碼機(jī)通信模型 2 Enigma密碼機(jī)構(gòu)造 3 Enigma密碼機(jī)加解密過(guò)程 3.1?加密過(guò)程 3.2?解密過(guò)程 4 Enigma密碼機(jī)的安全性 5 Enigma密碼機(jī)破解 5.1?波蘭雷耶夫斯基破解 5.2?圖靈破解 ? ? ? ?近代密碼一般指20世紀(jì)初~20世紀(jì)70年代期間的密碼技術(shù)。20 世紀(jì)初電報(bào)的出現(xiàn)第一次使遠(yuǎn)距離

    2024年02月06日
    瀏覽(88)
  • 【密碼學(xué)】量子安全的密碼學(xué)算法以及原理介紹

    (1)“代數(shù)格密碼套件”(CRYSTALS)包含兩個(gè)密碼原語(yǔ)Kyber和Dilithium。Kyber是一種抗適應(yīng)性選擇密文攻擊(IND-CCA2)安全密鑰封裝機(jī)制,Dilithium是一種高度不可偽造性(EUF-CMA)安全數(shù)字簽名算法。兩種密碼都是為了應(yīng)對(duì)量子計(jì)算機(jī)的攻擊,并且在操作過(guò)程中只需更改幾個(gè)參數(shù)即

    2024年02月11日
    瀏覽(98)
  • 程序猿成長(zhǎng)之路之密碼學(xué)篇-密碼學(xué)簡(jiǎn)介

    程序猿成長(zhǎng)之路之密碼學(xué)篇-密碼學(xué)簡(jiǎn)介

    在閱讀本文前需要了解的術(shù)語(yǔ): 授權(quán)人/非授權(quán)人:授權(quán)人指獲取了查看數(shù)據(jù)權(quán)限的用戶,非授權(quán)人則是指未獲取到權(quán)限的用戶。 明文/密文:明文指沒(méi)有加密的數(shù)據(jù)內(nèi)容,密文是指加密后的數(shù)據(jù)內(nèi)容 CIA(密碼學(xué)中不是美國(guó)中情局的意思,是信息安全三要素): C-Confidentiality 機(jī)

    2024年02月04日
    瀏覽(19)
  • 密碼學(xué):公鑰密碼.(非對(duì)稱密碼)

    密碼學(xué):公鑰密碼.(非對(duì)稱密碼)

    公鑰密碼 (Public Key Cryptography),又稱為 非對(duì)稱密碼 ,其最大特征是 加密和解密不再使用相同的密鑰 ,而使用不同的密鑰。使用者會(huì)將一個(gè)密鑰公開(kāi),而將另一個(gè)密鑰私人持有,這時(shí)這兩個(gè)密鑰被稱為 公鑰和私鑰 。一般來(lái)說(shuō),公鑰和私鑰是難以互相計(jì)算的,但它們可以互相

    2024年02月03日
    瀏覽(22)
  • 應(yīng)用密碼學(xué)實(shí)驗(yàn) 古典密碼

    應(yīng)用密碼學(xué)實(shí)驗(yàn) 古典密碼

    實(shí)驗(yàn)一 古典密碼 單表代替、多表代替 實(shí)驗(yàn)?zāi)康?通過(guò)實(shí)驗(yàn)熟悉掌握凱撒密碼原理和多表代替密碼的實(shí)現(xiàn)方法,編譯實(shí)現(xiàn)加密算法,提高程序設(shè)計(jì)能力,掌握窮舉破譯的方法。 實(shí)驗(yàn)要求 輸入任意的一段明文,對(duì)其進(jìn)行加密并輸出密文。 輸入一段密文,利用窮舉法進(jìn)行唯密文攻

    2023年04月15日
    瀏覽(116)
  • 密碼學(xué)入門——環(huán)游密碼世界

    密碼學(xué)入門——環(huán)游密碼世界

    圖解密碼技術(shù) 第三版 1.1 本書主要角色 1.2 加密與解密 加密 解密 密碼破譯 2.1 密鑰 加密,解密與密鑰 2.2 對(duì)稱密碼和公鑰密碼 1.對(duì)稱密碼是指在加密和解密時(shí)使用同一密鑰的方式。 2.公鑰密碼是指在加密和解密時(shí)使用不同密鑰的方式。因此,公鑰密碼又稱非對(duì)稱密碼。 2.3 混

    2024年02月10日
    瀏覽(26)
  • 【密碼學(xué)】三、分組密碼概述

    【密碼學(xué)】三、分組密碼概述

    分組密碼算法是將輸入數(shù)據(jù)劃分成固定長(zhǎng)度的組進(jìn)行加密和解密的一類對(duì)稱密碼算法。本章主要介紹分組密碼概述、DES、AES,以及分組密碼的工作模式和分組密碼分析。 分組密碼是一種單鑰或?qū)ΨQ密碼算法,通信雙方使用相同的密鑰加密和解密。 在分組密碼中,要將明文分

    2024年02月16日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包