[计算机]2011秋数学实验实验报告4密码学初步.doc
年级、专业 姓名 学号名单序号 实验时间 MATLAB版本 PC 注实验报告的最后一部分是实验小结与收获 实验报告(4)密码学初步1 编一个函数统计一段英文文章中各字母出现的频率。返回值是一个元胞数组,第二个值是文章中按A到Z的顺序各个字母出现的频率。function y myStatfilenamech textreadfilename,c;y; total 0;y1 char6590;freq zeros1, 26;n numelch;for i 1n for j 025 if chi j 65 chi j 97 freqj1 freqj1 1; total total 1; end endendy2 freq/total;2 编一个函数,在已知密钥的情况下,用加法密码进行加密和解密。加密算法function y encryptorigin, keyn numelorigin;for i 1n if origini A origini Z origini rem26 origini key - A, 26 A a origini z origini rem26 origini key - a, 26 a解密算法function y decryptcryptograph, keyn numelcryptograph;for i 1n if cryptographi A cryptographi Z cryptographi rem26 cryptographi - key - A, 26 A a cryptographi z cryptographi rem26 cryptographi - key - a, 26 a3编一个函数,在已知密钥的情况下,对维吉尼亚密码进行加密和解密。加密函数function y encryptorigin, keyn numelorigin;m numelkey;for i 1n if origini A origini Z index remi, m; if index index m; end origini rem26 origini MyOffsetkeyindex - A, 26 A a origini z index remi, m; if index index m; end origini rem26 origini MyOffsetkeyindex - a, 26 a解密函数function y decryptcryptograph, keyn numelcryptograph;m numelkey;for i 1n if cryptographi A cryptographi Z index remi, m; if index index m; end cryptographi rem26 cryptographi - MyOffsetkeyindex - A, 26 A a cryptographi z index remi, m; if index index m; end cryptographi rem26 cryptographi - MyOffsetkeyindex - a, 26 a辅助函数function y MyOffsetxif x A x Z y x - A a x z y x - a输入的密钥有误end2011秋 数学实验实验报告(4)密码学初步 3 / 3