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

C語言實現(xiàn)移位密碼

這篇具有很好參考價值的文章主要介紹了C語言實現(xiàn)移位密碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.認識密碼學

加密算法分為對稱加密和非對稱加密:

  1. 對稱加密:對稱加密算法使用相同的密鑰進行加密和解密操作。發(fā)送方和接收方需要共享同一個密鑰,這個密鑰被稱為對稱密鑰。對稱加密算法的優(yōu)勢在于加密和解密速度快,適用于大量數(shù)據(jù)的加密。然而,對稱加密的缺點是密鑰分發(fā)問題。當通信雙方需要建立安全通信時,他們需要以安全的方式共享密鑰,否則第三方可能會截獲密鑰并破解加密的數(shù)據(jù)。常見的對稱加密算法有:AES(Advanced Encryption Standard)、DES(Data Encryption Standard)、3DES(Triple DES)和Blowfish等。

  2. 非對稱加密:非對稱加密算法使用一對密鑰,即公鑰和私鑰。公鑰是公開的,可以被任何人獲取;私鑰則需要嚴格保密。使用公鑰加密的數(shù)據(jù)只能用對應的私鑰解密,反之亦然。非對稱加密解決了對稱加密中的密鑰分發(fā)問題,因為公鑰可以公開,不需要安全地傳輸。然而,非對稱加密算法的缺點是加密和解密速度較慢,不適合對大量數(shù)據(jù)進行加密。常見的非對稱加密算法有:RSA、ECC(Elliptic Curve Cryptography)、ElGamal和DSA(Digital Signature Algorithm)等。

在實際應用中,通常會將對稱加密和非對稱加密結(jié)合使用。例如,使用非對稱加密算法安全地傳輸對稱密鑰,然后使用對稱加密算法對數(shù)據(jù)進行加密。這樣既保證了密鑰的安全傳輸,又能高效地加密和解密數(shù)據(jù)。

二.移位密碼

?? 移位密碼(Caesar Cipher)也叫凱撒密碼是一種簡單的加密技術(shù),它通過將明文中的每個字母按照指定的位數(shù)進行移位,從而生成密文。例如,在一個"左移3位"的移位密碼中,文中的每個字母都向左移動3個位置,即A變成D,B變成E, 以此類推。移位密碼可以被輕松破解,因此現(xiàn)在已經(jīng)很少用于實際的加密通信中。

三.移位密碼原理

2.1 名詞解釋

  • 明文:發(fā)送發(fā)想要發(fā)送的信息;
  • 密文:經(jīng)過加密后的信息;
  • 密匙:加密時移動的位數(shù)k。
    (這里解釋是我個人理解,非標準定義)

2.2 移位加密

具體來說,移位加密通常將明文中的每個字母替換為其在字母表中向后(或向前)移動固定數(shù)量的位置得到對應的密文字母。
步驟如下:

  • 選擇一個偏移量 k,確定每個字符需要向后移動還是向前移動。
  • 對于明文中的每個字符,根據(jù)偏移將其向后或向前移動相應的位數(shù),并將結(jié)果記錄下來。
  • 將所有移位后的字符連接起來,得到密文。

例如:這里假設(shè)明文是 word ,現(xiàn)在的密匙(偏移量)為3,那么我們加密后的密文就是 zrug 。(這里需要結(jié)合字母順序表查看,順序表由發(fā)送發(fā)與接收方約定定義,無第三方知道) 這里的偏移量表示字母移動的距離,當偏移量為正數(shù)時,字母向后移動;當偏移量為負數(shù)時,字母向前移動。

2.3 移位解密

具體來說,移位解密通常將密文中的每個字母替換為其在字母表中向后(或向前)移動固定數(shù)量的位置得到對應的明文字母。
步驟如下

  • 選擇一個偏移量 k,確定每個字符需要向后移動還是向前移動。
  • 對于密文中的每個字符,根據(jù)偏移將其向后或向前移動相應的位數(shù),并將結(jié)果記錄下來。
  • 將所有移位后的字符連接起來,得到明文。

例如:如果現(xiàn)在的密文是 zrug ,密匙為3,那么明文就是 word 。

2.4 補充描述

  • 現(xiàn)實生活中,密碼是不存在空格的,因為英文大家都知道,傳輸一篇文章空格要占許多,對發(fā)送加密造成干擾,所以約定去掉字母。
  • 補充本次實驗所需的字母順序表
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

這里我們?yōu)榱朔奖憷斫?,就用小寫?/p>

四.優(yōu)缺點

優(yōu)點:

  • 簡單易懂
  • 易于實現(xiàn)和使用

缺點:

  • 安全性較低,容易受到暴力破解攻擊
  • 容易受到頻率分析攻擊

缺陷原因分析:

  • 只是將明文中的字符按照一定規(guī)則進行移動,不涉及其他復雜的操作;
  • 沒有對明文中不同字符出現(xiàn)的頻率進行混淆處理。

五.C語言實現(xiàn)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define Maxsize 50            //定義信息最大量

//加密函數(shù)
void jiami(char *&p,int n,int h)
{
	printf("密文:");
	for(int i=0;i<h-1;i++)               //循環(huán)輸出數(shù)組的每一個字符
	{
		printf("%c",(char) ((p[i] + 'a' - 97) + n - 97) % 26 + 97);
	}
	printf("\n");
}

//解密函數(shù)
void jiemi(char *&p)
{
	for (int i = 1; i < 26; i++) {
		printf("k為%d的明文:", i);            //循環(huán)輸出數(shù)組的每一個字符
		for (int j = 0; j < strlen(p); j++) {
			printf("%c", (char) (((p[j] + 'a' - 97) + 26 - i - 97) % 26 + 97));
			//對應ASCLL碼表,但是我們自定義了字母順序表,需要轉(zhuǎn)換范圍
		}
		printf("\n");
	}
}

int main()
{ 
	char str1[Maxsize],str2[Maxsize];
	char *p=str1,*q=str2;
	int n;
	printf("請輸入明文:");            //加密測試
	fgets(str1, Maxsize, stdin);
    int len1=strlen(str1);
	printf("請輸入移位密匙:");
	scanf("%d",&n);
	jiami(p,n,len1);
	printf("------------------");
	printf("\n");
	printf("請輸入密文:");             //解密測試
	printf("\n");
	scanf("%s",str2);
	jiemi(q);

}

六.運行結(jié)果

C語言實現(xiàn)移位密碼

這是密碼學中最簡單的一種加密方法,但我們可以使其變得更復雜一些,比如自定義字母順序表,密匙加強等。同時可以作為我們接觸密碼學的一個切入點,后面更多復雜的知識點會慢慢接觸。文章來源地址http://www.zghlxwxcb.cn/news/detail-501602.html

到了這里,關(guān)于C語言實現(xiàn)移位密碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 密碼學:一文讀懂非對稱加密算法 DH、RSA

    密碼學:一文讀懂非對稱加密算法 DH、RSA

    我們可能沒有在瑞士蘇黎世銀行存入巨額資產(chǎn)的機會,但相信大多數(shù)人都在電影中見到這樣一組鏡頭: 戶主帶著自己的鑰匙來到銀行,要求取出自己寄放的物品。銀行工作人員驗明戶主身份后,拿出另一把鑰匙同戶主一起打開保險柜,將用戶寄放物品取出。我們可以把這個保

    2024年01月21日
    瀏覽(35)
  • 密碼學概念科普(加密算法、數(shù)字簽名、散列函數(shù)、HMAC)

    密碼散列函數(shù) (Cryptographic hash function),是一個單向函數(shù),輸入消息,輸出摘要。主要特點是: 只能根據(jù)消息計算摘要,很難根據(jù)摘要反推消息 改變消息,摘要一定會跟著改變 對于不同的消息,計算出的摘要幾乎不可能相同 根據(jù)散列函數(shù)的上述特點,可以應用在保存密碼、數(shù)

    2024年02月10日
    瀏覽(54)
  • 現(xiàn)代密碼學第二次實驗:分組加密算法DES及其工作模式

    現(xiàn)代密碼學第二次實驗:分組加密算法DES及其工作模式

    為了幫助同學們完成痛苦的實驗課程設(shè)計,本作者將其作出的實驗結(jié)果及代碼貼至CSDN中,供同學們學習參考。如有不足或描述不完善之處,敬請各位指出,歡迎各位的斧正! 1、掌握DES算法的工作原理。 2、熟悉分組加密算法的4種工作模式(OFB模式可不做)。 3、了解DES的雪

    2024年02月06日
    瀏覽(54)
  • 【密碼學】塊加密(分組加密)的工作模式

    【密碼學】塊加密(分組加密)的工作模式

    上一篇文章討論了 DES 算法,現(xiàn)在我們有了“給定 64-bit 的明文、64-bit 的密鑰,輸出 64-bit 的密文”的加密手段。這離實際應用還有一點點距離,因為要傳遞的信息當然不止 64 位。 要用 DES 加密一條信息,一般先把信息填充到 64 的倍數(shù),于是就可以分成許多組,每組 8 個字節(jié)

    2024年02月16日
    瀏覽(24)
  • 密碼學——128位AES算法(C/C++實現(xiàn))
  • 密碼學—Vigenere加密Python程序

    密碼學—Vigenere加密Python程序

    古典密碼,屬于多表加密。 怎么就是多表了? 維吉尼亞密碼的加密算法實質(zhì)是凱撒密碼,因為他是先分好小組,然后用密鑰串對應著分好組的每一個字母進行加密(因為一個凱撒表用密鑰串的一個字母加密),當然是遵循下標相同的,比如秘鑰為:abc,明文為qwer,然后明文

    2024年02月11日
    瀏覽(26)
  • 【網(wǎng)絡(luò)安全】【密碼學】【北京航空航天大學】實驗五、古典密碼(中)【C語言實現(xiàn)】

    【網(wǎng)絡(luò)安全】【密碼學】【北京航空航天大學】實驗五、古典密碼(中)【C語言實現(xiàn)】

    實驗目的 和 原理簡介 參見博客:古典密碼(上) 1、弗納姆密碼(Vernam Cipher) (1)、算法原理 加密 原理: 加密過程可以用方程 ci = pi (+) ki 表示,其中 pi 是明文第 i 個二進制位, ki 是密鑰第 i 個二進制位, ci 是密文第 i 個二進制位, (+) 是 異或 運算符。密文是通過對明

    2024年01月21日
    瀏覽(90)
  • 【網(wǎng)絡(luò)安全】【密碼學】【北京航空航天大學】實驗四、古典密碼(上)【C語言實現(xiàn)】

    【網(wǎng)絡(luò)安全】【密碼學】【北京航空航天大學】實驗四、古典密碼(上)【C語言實現(xiàn)】

    1、 通過本次實驗,了解古典加密算法的 主要思想 ,掌握 常見的 古典密碼。 2、 學會 應用 古典密碼,掌握針對部分古典密碼的 破譯方法 。 古典密碼的編碼方法主要有兩種: 置換 和 代替 。 置換密碼 重新排列明文中字符的順序,不改變字符本身; 代替密碼 不改變明文中

    2024年01月21日
    瀏覽(94)
  • 密碼學——古典密碼中的基本加密運算附簡單例題

    本篇文章將對古典密碼中使用到的基本加解密運算進行總結(jié),并展示個別加減密運算的簡單例題,從而使讀者更加容易理解古典密碼中的基本加減密運算的原理。 首先引入密碼學中的幾個基本定義: M:明文空間,明文的集合 C:密文空間,密文的集合 K:密鑰空間(也稱密鑰

    2024年02月12日
    瀏覽(49)
  • 密碼學【java】初探究加密方式之非對稱加密

    密碼學【java】初探究加密方式之非對稱加密

    非對稱加密算法又稱現(xiàn)代加密算法。非對稱加密是計算機通信安全的基石,保證了加密數(shù)據(jù)不會被破解。 與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey) 和私有密(privatekey) 公開密鑰和私有密鑰是一對。如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應的

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包