[计算机]2011秋数学实验实验报告4密码学初步
(3页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
14.90 积分
年级、专业 姓名 学号名单序号 实验时间 MATLAB版本: PC 注:实验报告的最后一部分是实验小结与收获 实验报告(4):密码学初步1. 编一个函数统计一段英文文章中各字母出现的频率。返回值是一个元胞数组,第二个值是文章中按A到Z的顺序各个字母出现的频率。function y = myStat(filename)ch = textread(filename,'%c');y={}; total = 0;y{1} = char(65:90);freq = zeros(1, 26);n = numel(ch);for i = 1:n for j = 0:25 if (ch(i) == j + 65 || ch(i) == j + 97) freq(j+1) = freq(j+1) + 1; total = total + 1; end endendy{2}= freq/total;2. 编一个函数,在已知密钥的情况下,用加法密码进行加密和解密。加密算法:function y = encrypt(origin, key)n = numel(origin);for i = 1:n if (origin(i) >= 'A' && origin(i) <= 'Z') origin(i) = rem(26 + origin(i) + key - 'A', 26) + 'A'; elseif (origin(i) >= 'a' && origin(i) <= 'z') origin(i) = rem(26 + origin(i) + key - 'a', 26) + 'a'; endendy = origin;解密算法:function y = decrypt(cryptograph, key)n = numel(cryptograph);for i = 1:n if (cryptograph(i) >= 'A' && cryptograph(i) <= 'Z') cryptograph(i) = rem(26 + cryptograph(i) - key - 'A', 26) + 'A'; elseif (cryptograph(i) >= 'a' && cryptograph(i) <= 'z') cryptograph(i) = rem(26 + cryptograph(i) - key - 'a', 26) + 'a'; endendy = cryptograph;3.编一个函数,在已知密钥的情况下,对维吉尼亚密码进行加密和解密。加密函数:function y = encrypt(origin, key)n = numel(origin);m = numel(key);for i = 1:n if (origin(i) >= 'A' && origin(i) <= 'Z') index = rem(i, m); if (~index) index = m; end origin(i) = rem(26 + origin(i) + MyOffset(key(index)) - 'A', 26) + 'A'; elseif (origin(i) >= 'a' && origin(i) <= 'z') index = rem(i, m); if (~index) index = m; end origin(i) = rem(26 + origin(i) + MyOffset(key(index)) - 'a', 26) + 'a'; endendy = origin;解密函数:function y = decrypt(cryptograph, key)n = numel(cryptograph);m = numel(key);for i = 1:n if (cryptograph(i) >= 'A' && cryptograph(i) <= 'Z') index = rem(i, m); if (~index) index = m; end cryptograph(i) = rem(26 + cryptograph(i) - MyOffset(key(index)) - 'A', 26) + 'A'; elseif (cryptograph(i) >= 'a' && cryptograph(i) <= 'z') index = rem(i, m); if (~index) index = m; end cryptograph(i) = rem(26 + cryptograph(i) - MyOffset(key(index)) - 'a', 26) + 'a'; endendy = cryptograph;辅助函数:function y = MyOffset(x)if (x >= 'A' && x <= 'Z') y = x - 'A';elseif (x >= 'a' && x <= 'z') y = x - 'a';else error('输入的密钥有误!')end2011秋 数学实验实验报告(4)密码学初步 3 / 3 关 键 词: 计算机 2011 数学 实验 报告 密码学 初步
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文