凯撒密码JAVA简单实现
- 格式:pdf
- 大小:118.73 KB
- 文档页数:2


第1篇一、实验背景凯撒密码是一种古老的加密技术,由罗马皇帝凯撒发明。
它是一种替换加密,通过将明文字母表中的字母按照一个固定的偏移量进行替换,生成密文。
凯撒密码是最简单、最广为人知的加密技术之一,其加密和解密过程都非常简单。
二、实验目的1. 理解凯撒密码的加密和解密原理;2. 掌握凯撒密码的编程实现;3. 分析凯撒密码的安全性,了解其局限性;4. 比较凯撒密码与其他加密算法的差异。
三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm四、实验内容1. 凯撒密码加密和解密算法实现2. 凯撒密码安全性分析3. 凯撒密码与其他加密算法的比较五、实验步骤1. 凯撒密码加密和解密算法实现(1)定义凯撒密码加密和解密函数```pythondef caesar_encrypt(text, shift):encrypted_text = ""for char in text:if char.isalpha():shifted = ord(char) + shiftif char.isupper():if shifted > ord('Z'):shifted -= 26elif char.islower():if shifted > ord('z'):shifted -= 26encrypted_text += chr(shifted) else:encrypted_text += charreturn encrypted_textdef caesar_decrypt(text, shift):decrypted_text = ""for char in text:if char.isalpha():shifted = ord(char) - shiftif char.isupper():if shifted < ord('A'):shifted += 26elif char.islower():if shifted < ord('a'):shifted += 26decrypted_text += chr(shifted)else:decrypted_text += charreturn decrypted_text```(2)测试凯撒密码加密和解密函数```pythonif __name__ == "__main__":text = "Hello, World!"shift = 3encrypted_text = caesar_encrypt(text, shift)decrypted_text = caesar_decrypt(encrypted_text, shift)print("Original text:", text)print("Encrypted text:", encrypted_text)print("Decrypted text:", decrypted_text)```2. 凯撒密码安全性分析凯撒密码的安全性非常低,因为其密钥空间只有26个可能的值(即字母表中的字母数量)。
凯撒密码(Caesar Cipher)是一种最简单且最广为人知的加密技术之一。
它是一种替换密码,其中每个字母在原文中被偏移、移动固定的位置。
以下是一个使用C语言实现凯撒密码的示例:c#include <stdio.h>#include <string.h>void caesar_encrypt(char* plaintext, int shift) {char ciphertext[strlen(plaintext)];for (int i = 0; i < strlen(plaintext); i++) {char c = plaintext[i];if (c >= 'a' && c <= 'z') {ciphertext[i] = (c - 'a' + shift) % 26 + 'a';} else if (c >= 'A' && c <= 'Z') {ciphertext[i] = (c - 'A' + shift) % 26 + 'A';} else {ciphertext[i] = c;}}ciphertext[strlen(plaintext)] = '\0'; // Null-terminate the stringprintf("Ciphertext: %s\n", ciphertext);}int main() {char plaintext[100];int shift;printf("Enter the plaintext to be encrypted: ");fgets(plaintext, sizeof(plaintext), stdin); // Read plaintext from stdin plaintext[strcspn(plaintext, "\n")] = 0; // Remove newline character from inputprintf("Enter the shift value: ");scanf("%d", &shift); // Read shift value from stdincaesar_encrypt(plaintext, shift); // Encrypt the plaintext using the Caesar cipherreturn 0;}这个程序首先定义了一个名为caesar_encrypt的函数,它接受一个明文字符串和一个偏移量作为输入,然后生成并打印出相应的密文。
Caesar加密解密java实现信息112 孟亚男·加密过程import java.util.Scanner;class TestCaesar {public static void main(String args[]) {System.out.print("请输入密钥key:" + " ");Scanner scan1 = new Scanner(System.in);// 用Scanner用于扫描输入的文本(孟)int key = scan1.nextInt();System.out.print("请输入明文:" + " ");Scanner scan2 = new Scanner(System.in);String data = scan2.nextLine();String es = "";// 定义字符串变量,方便输出for (int i = 0; i < data.length(); i++) {char c = data.charAt(i);if (c >= 'a' && c <= 'z') {c += key % 26;if (c < 'a')c += 26;if (c > 'z')c -= 26;} else if (c >= 'A' && c <= 'Z') {c += key % 26;if (c < 'A')c += 26;if (c > 'Z')c -= 26;}es += c;}System.out.println("产生的密文是:" + es);}}·运行举例请输入密钥key: 5请输入密钥key: ABCDEFGHI产生的密文是:FGHIJKLMN·解密过程class TestCaesar{public static void main(String args []){System.out.print("请输入密文:" + " ");Scanner scan2 = new Scanner(System.in);String data = scan2.nextLine();for(int key=0;key <= 25;key++){ //循环产生所有可能的密文String es="";//定义字符串变量,方便输出for (int i = 0; i < data.length(); i++){char c = data.charAt(i);if (c >= 'a' && c <= 'z'){c -= key % 26;if (c < 'a') c += 26;if (c > 'z') c -= 26;}else if (c >= 'A' && c <= 'Z'){c -= key % 26;if (c < 'A') c += 26;if (c > 'Z') c -= 26;}es += c;}System.out.println("KEY:"+key+"产生的密文是:"+es);}}}运行得到所有可能的明文:(得到明文最有可能的就是密钥为15的)请输入密文: YJAXJH RPTHPG XH DCT DU IWT VGTPITHI GJATG DU IWT GDBPC TBEXGT KEY:0明文是:YJAXJH RPTHPG XH DCT DU IWT VGTPITHI GJATG DU IWT GDBPC TBEXGT KEY:1明文是:XIZWIG QOSGOF WG CBS CT HVS UFSOHSGH FIZSF CT HVS FCAOB SADWFS KEY:2明文是:WHYVHF PNRFNE VF BAR BS GUR TERNGRFG EHYRE BS GUR EBZNA RZCVER KEY:3明文是:VGXUGE OMQEMD UE AZQ AR FTQ SDQMFQEF DGXQD AR FTQ DAYMZ QYBUDQ KEY:4明文是:UFWTFD NLPDLC TD ZYP ZQ ESP RCPLEPDE CFWPC ZQ ESP CZXLY PXATCP KEY:5明文是:TEVSEC MKOCKB SC YXO YP DRO QBOKDOCD BEVOB YP DRO BYWKX OWZSBO KEY:6明文是:SDURDB LJNBJA RB XWN XO CQN PANJCNBC ADUNA XO CQN AXVJW NVYRAN KEY:7明文是:RCTQCA KIMAIZ QA WVM WN BPM OZMIBMAB ZCTMZ WN BPM ZWUIV MUXQZM KEY:8明文是:QBSPBZ JHLZHY PZ VUL VM AOL NYLHALZA YBSLY VM AOL YVTHU LTWPYL KEY:9明文是:PAROAY IGKYGX OY UTK UL ZNK MXKGZKYZ XARKX UL ZNK XUSGT KSVOXK KEY:10明文是:OZQNZX HFJXFW NX TSJ TK YMJ LWJFYJXY WZQJW TK YMJ WTRFS JRUNWJ KEY:11明文是:NYPMYW GEIWEV MW SRI SJ XLI KVIEXIWX VYPIV SJ XLI VSQER IQTMVI KEY:12明文是:MXOLXV FDHVDU LV RQH RI WKH JUHDWHVW UXOHU RI WKH URPDQ HPSLUH KEY:13明文是:LWNKWU ECGUCT KU QPG QH VJG ITGCVGUV TWNGT QH VJG TQOCP GORKTG KEY:14明文是:KVMJVT DBFTBS JT POF PG UIF HSFBUFTU SVMFS PG UIF SPNBO FNQJSF KEY:15明文是:JULIUS CAESAR IS ONE OF THE GREATEST RULER OF THE ROMAN EMPIRE KEY:16明文是:ITKHTR BZDRZQ HR NMD NE SGD FQDZSDRS QTKDQ NE SGD QNLZM DLOHQD KEY:17明文是:HSJGSQ AYCQYP GQ MLC MD RFC EPCYRCQR PSJCP MD RFC PMKYL CKNGPC KEY:18明文是:GRIFRP ZXBPXO FP LKB LC QEB DOBXQBPQ ORIBO LC QEB OLJXK BJMFOB KEY:19明文是:FQHEQO YWAOWN EO KJA KB PDA CNAWPAOP NQHAN KB PDA NKIWJ AILENA KEY:20明文是:EPGDPN XVZNVM DN JIZ JA OCZ BMZVOZNO MPGZM JA OCZ MJHVI ZHKDMZ KEY:21明文是:DOFCOM WUYMUL CM IHY IZ NBY ALYUNYMN LOFYL IZ NBY LIGUH YGJCLY KEY:22明文是:CNEBNL VTXLTK BL HGX HY MAX ZKXTMXLM KNEXK HY MAX KHFTG XFIBKX KEY:23明文是:BMDAMK USWKSJ AK GFW GX LZW YJWSLWKL JMDWJ GX LZW JGESF WEHAJW KEY:24明文是:ALCZLJ TRVJRI ZJ FEV FW KYV XIVRKVJK ILCVI FW KYV IFDRE VDGZIV KEY:25明文是:ZKBYKI SQUIQH YI EDU EV JXU WHUQJUIJ HKBUH EV JXU HECQD UCFYHU。