用计算机做数学实验报告,[计算机]2011秋数学实验实验报告4密码学初步

这篇实验报告详细介绍了如何使用MATLAB编程实现加法密码和维吉尼亚密码的加密及解密功能。报告包含了三个函数,分别用于统计英文文章字母频率、加法密码的加密与解密、以及维吉尼亚密码的加密与解密。这些函数通过循环和条件判断来处理字符,实现了密码学的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a7f4a3f590493a1e451dd952a488fd7c.gif [计算机]2011秋数学实验实验报告4密码学初步

(3页)

e701f258f1ace9cfda00e5a0b78ffaff.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

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 数学 实验 报告 密码学 初步

4d91c43bfc72ca913299809b07b4968f.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值