精华内容
下载资源
问答
  • 编码转换流 字节流:针对二进制文件 字符流:针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-8 1 概述 编码转换流(InputStreamReader/OutputStreamWriter)主要进行编码的转换,用来解决字符流读写...

    编码转换流

    字节流:针对二进制文件
    字符流:针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-8

    1 概述

    编码转换流(InputStreamReader/OutputStreamWriter)主要进行编码的转换,用来解决字符流读写乱码的问题
    

    2 工具API学习

    OutputStreamWriter :
    OutputStreamWriter(OutputStream out)把传入的字节流转成字符流
    OutputStreamWriter(OutputStream out ,String charsetName)把Unicode转成其他编码输出

    InputStreamReader :
    InputStreamReader(InputStream in) 把传入的字节流转成字符流
    InputStreamReader(InputStream in,String charsetName)读取其他编码转成Unicode

    3 常见字符编码表

    在这里插入图片描述

    4 练习:编码转换测试

    创建包: cn.tedu. encoding
    创建类: TestEncode.java

    package cn.tedu.encoding;
    
    import java.io.*;
    
    /*本类用于测试编码转换流*/
    public class TestEncode {
        public static void main(String[] args) {
            method1();//用来测试OutputStreamWriter
            method2();//用来测试InputStreamReader
        }
    
        private static void method2() {
            //1.创建一个在本方法中都生效的局部变量,并给变量初始化
            InputStreamReader in = null;
            //2.由于IO操作可能会抛出异常,所以需要try-catch-finally结构
            try{
                //3.创建针对于输入流的编码转换流对象
                in = new InputStreamReader(
                        new FileInputStream("1.txt"),"utf-8");
                        //new FileInputStream("1.txt"),"gbk");
                        //new FileInputStream("1.txt"),"iso-8859-1");
                //4.使用流读取数据,并将读取到的信息打印在控制台
                //read方法的返回值类型是int,打印的是编码
                //UTF-8-28023    gbk-23092   iso-8859-1-230
                //System.out.println(in.read());
                //拓展:将刚刚读到的数据,以中文的格式展示在控制台
                char[] ch = new char[8192];
                //Reader中的方法:read(char[] cbuf)将字符读入数组,返回读取到的字符的个数
                int len = in.read(ch);//len保存的是读取到的字符的个数
                //此处是String的构造函数,利用ch数组中的数据,构建一个字符串,并打印到控制台
                System.out.println(new String(ch,0,len));
                System.out.println("恭喜您!成功读取!");
            }catch (Exception e){
                System.out.println("很抱歉!读取失败!");
                e.printStackTrace();
            }finally {
                //5.关流
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        private static void method1() {
            //1.创建一个在本方法中都生效的局部变量,并给变量初始化
            OutputStreamWriter out = null;
            //2.由于代码可能会产生IO异常,所以需要完成try-catch-finally结构
            try{
                //3.创建流对象
                out = new OutputStreamWriter(
                        new FileOutputStream("1.txt"),"utf-8");
                        //new FileOutputStream("1.txt"),"iso-8859-1");
                        //new FileOutputStream("1.txt"),"gbk");
                //4.使用流对象写出数据
                out.write("海绵宝宝与派大星");
                System.out.println("执行成功!");
            }catch (Exception e){
                System.out.println("执行失败!");
                e.printStackTrace();
            }finally {
                //5.关流
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    展开全文
  • 很多人把技术都放在了一个比较高的位置,但是技术真的只是达成目标的一种手段,完全不懂编程,不想代码,能不能实现爬虫程序呢?答案当然是可以。网址为 : https://www.webscraper.io/,.

    今天是持续写作的第 16 / 100 天。
    如果你有想要交流的想法、技术,欢迎在评论区留言。

    很多人把技术都放在了一个比较高的位置,但是技术真的只是达成目标的一种手段,完全不懂编程,不想写代码,能不能实现爬虫程序呢?答案当然是可以。

    本系列文章将带你进入无编码写爬虫的大门,人人都可完成爬虫程序,人人都能采集到自己需要的数据。

    缓解一下视疲劳

    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。

    Web Scraper 简介与安装

    官方网址给出的定义: Making web data extraction easy and accessible for everyone

    该插件属于浏览器插件,官方网址为 : https://www.webscraper.io/,官网中的下载地址如图所示。

    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。

    该插件基于谷歌浏览器与火狐浏览器,但是访问谷歌插件商店需要科学上网,不好弄,建议在搜索引擎直接检索下载,如果检索不到,可以使用我帮你找的下面这个地址。

    # 数据来源网络,你可以自行查找,资源非常多。
    https://pan.baidu.com/s/1CfAWf0wMO6WqicoUgdYgkg 提取码: nn2e
    

    在打开的页面中,下载文件夹和 crx 文件都可以,安装不存在差异。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。

    浏览器插件安装

    谷歌浏览器插件安装直接在浏览器地址栏输入 chrome://extensions/,打开的页面中开启开发者模式。拖拽 crx 文件到浏览器插件页面即可。

    拖拽的方式很容易出现的错误就是 程序包无效,下图所示错误。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    解决办法非常简单,修改 crx 文件后缀名为 zip,解压之后,通过文件夹进行安装。注意点击 加载已解压的扩展程序,选择解压之后的文件夹即可。

    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    安装完毕,将插件展示到浏览器扩展位置。按照以下两个步骤操作即可,最终在浏览器出现一个蜘蛛网图标表示成功。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    如果还不是很清楚安装的过程,可以参照 CSDN 开发助手首页,Web Scraper 的安装过程与开发者助手是一致的。
    插件官网:https://plugin.csdn.net/

    除了检测插件图标以外,还需要在开发者工具中检查一下功能是否存在。开发者工具在最后增加了一项 Web Scraper,出现该项就可以啦。

    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。

    找个网站练练手

    Web Scraper 特别像是一款软件,刚接触发现哪个按钮都不会点,使用一下发现,功能非常简单,只需要用鼠标就可以完成所有的操作了,基本上不用写代码(偶尔还是要敲几下键盘的)。

    学习软件操作类的技能,最好的办法就是用中学,用着用着就会了,千万不要扣里面的细节知识点。

    第一个要爬取的,暂定为 【人人都是产品经理】 这个网站。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    打开 Web Scraper 之后,其实很容易就知道下一步该如何操作了,因为这三个按钮中只有第三个可以点击。

    点击 Create new sitemap 表示创建一个网站导览,Sitemap name 理解成爬虫的名称就行,下面的 Start URL 起始页面地址,可以为多个 URL,本文案例不涉及,后面文章包含该内容。后面我们可以将 sitemap 就当成一个爬虫程序,这样就比较容易理解了。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。

    输入 sitemap namestart url 之后,就可以创建一个待爬取的网站了。输入的内容如下:

    • sitemap name : woshipm
    • start url : http://www.woshipm.com/

    创建完毕之后默认进入如下界面,注意两个位置,第一个红色框选区域,_root 表示根节点,记住是名词就行了,表示你刚才设置页面的网页结构。下面的按钮是一个选择器,稍后讲解。

    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    此时注意到 sitemaps 已经可以点击,点击之后会罗列出所有的 sitemap,其实就是你可以写多个爬虫程序,这个地方是个清单。

    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。

    当点击某个爬虫程序进入内部之后,会发现菜单中还有一个细节变化。

    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    进入到某个具体的爬虫程序之后,上面的下拉列表可以进行操作了,不过暂时忽略。

    点击 add new selector 之后,跳转的页面为下图所示,重要的地方有两个,第一个是 Type,该值的选择影响界面输入内容,还有一个需要注意,parent selectors 父选择器,注意里面的值现在是 _root
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    接下来的操作就非常有意思了,我们点选 Select 按钮。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    静态图不是很少查看,使用动态图进行展示,点击该按钮之后,可以进入打开的网页进行选择,例如我点击的位置是文件的标题,点击一个之后,底色变红,在点击第二个,这样之后,Web Scraper 会自动将符合你点选规律的所有内容都选中,也就是下图展示的都为红色。你可以核对一下是否有问题,如无问题,点击窗口中间位置的 Done selecting 即可结束选择。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    结束选择之后点击的按钮和最终的效果如图。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    在 id 中书写一个名称之后,保存该选择器即可。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    此时跳转的页面如下图所示:
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    点击右侧的 Data preview 之后,出现的界面发现只有一条数据,和我们预期希望获得的多条数据不一致,点击 Edit 进入 selector 继续修改。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    勾选下图所示按钮之后,继续操作。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    保存选择器,返回上一界面,在点击 Data preview 出现多条数据表示本次操作完成。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    下面就要启动爬虫了,按照下图所示进行操作。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    点击 Scrape 进入界面需要设置一下请求数量与每个页面的请求延迟,一般保持默认即可。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    弹出一个小型浏览器界面,之后会跳转到如下界面。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    点击页面中的刷新按钮,数据拿到完成任务。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    最后一步选择导出数据到本地。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    注意最终的本地文件中的列名称如下,前面两个是系统自动生成的忽略即可,最后的一列是我们希望的数据,并且列名为刚才定义的 id 值。
    不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。
    到此,第一个案例已经完成。一行代码没有写就完成了一个爬虫程序。

    写在后面

    肯定第一次学习的时候有朋友会说,好麻烦啊,还不如简单写程序,用 requests 爬取简单呢。其实不然,随着后续课程的展开,你会发现这玩意很好使,在某些网站,尤其是有反爬手段的网站,这个使用起来简单、粗暴、有效。

    想学 Python 爬虫,可以订阅橡皮擦专栏哦~ 🈲🈲🈲🈲 《爬虫百例教程》点击发现惊喜 🈲🈲🈲🈲


    如果你想跟博主建立亲密关系,可以关注同名公众号 梦想橡皮擦,近距离接触一个逗趣的互联网高级网虫。
    博主 ID:梦想橡皮擦,希望大家点赞评论收藏

    展开全文
  • 软件工程师的自白:真希望自己从没编码

    万次阅读 多人点赞 2020-12-01 18:27:37
    尽管从事这一领域会有回报,但我必须承认:有时真希望自己从没编码。 怪癖 自从我开始学习编写代码以来,浏览网页就变得不一样了。我再也不能忍受我在使用其他网站时遇到的错误。每当有什么奇怪的事情...

    全文共2137字,预计学习时长6分钟

    图源:unsplash

    真正的软件工程不仅仅是一门技术,更是一种生活方式。我靠写代码谋生,连帽衫、乒乓球、随处可见的零食和饮料,这就是我的真实生活。尽管从事这一领域会有回报,但我必须承认:有时真希望自己从没学过编码。

     

    怪癖

     

    自从我开始学习编写代码以来,浏览网页就变得不一样了。我再也不能忍受我在使用其他网站时遇到的错误。每当有什么奇怪的事情发生时,好奇心就占了上风,这时我必须打开浏览器的开发工具,开始调试。

    试图提交表单时出现神秘的错误消息?这时我会深入研究JavaScript控制台、查找错误消息、挖掘源代码,并通过网络请求观察它们。

    用户界面看起来有点过时,或者页面布局非常华丽?不管怎样,我都会调整浏览器窗口的大小,看看它处理屏幕大小的响应能力如何。你选择的字体是Comic Sans吗?我可能再也不会相信你和你的公司了。

    请停止使用ComicSans字体

     

    职业生涯

    总的来说,工程师们相当固执己见,学究气已深入骨髓。是否使用空格或制表符缩进代码?更喜欢用Vim还是Emacs?Chrome还是Firefox?这些对话最终会导致有人问“这真的重要吗?”,现实生活中经常会有人浪费时间和精力讨论这种意义不大的问题。

    xkcd——《真正的程序员》

    随着越来越多的公司采用敏捷项目管理方法,有时不得不在使用Waterfall、Scrum、或者Kanban的开发周期之间进行比较取舍。我们都喜欢抨击Waterfall,认为它是过时的、效率低下的公司所使用的老古董。然而,Scrum与Kanban的战争仍在继续。

    “你说你是Scrum的忠实粉丝?我敢打赌,你一定喜欢人工时间框,它能轻松发送匆忙的代码,以便在sprint结束之前完成想象中的最后期限。”

    Dilbert - Scott Adams

    说到敏捷法,具体指哪方面?时间尺度?努力?复杂性?风险?或者所有这些?可能会花上几个小时讨论每一个定义的优点,但最终无法达成共识。在某种程度上,这可能会演变成一场无意义的讨论,但能够相互理解和有效沟通是至关重要的,这包括对我们一天中使用的术语有一个共同的理解。

    前端开发打开了另一个话题世界,最引人注目的是:“什么时候才能最终放弃对InternetExplorer的支持?”我必须得拿捏好分寸,一边对它深恶痛绝,时刻都想放弃它,同时也明白,对于那些已正在使用,深受其害的客户来说,需要支持它。

    Internet Explorer网络热图

     

    持续学习

    随着技术环境的不断变化,持续学习是软件工程的重要组成部分。每个月都有数百个新的库和框架发布,JavaScript枯竭是真实存在的。当我告诉别人我花了一天时间配置Webpack、Rollup和Babel以使用最新的ES6+语法时,他们可能认为我是在胡编乱造。

    Angular和Angular是两个完全不同的东西;LitElement、Svelte和Stencil似乎是有前途的web组件解决方案;Deno可能是新的Node。

    当有人问我工作时所使用的工具时,我只能直截了当地说:“我通常使用前端技术,像HTML、CSS和JS。有时我不得不使用PHP或SQL,但我更像是一个MEAN/MERN堆栈开发人员。有时使用Heroku之类的PaaS技术,但有时使用的是像AWS或GCP这样的IaaS提供商。”

    有关“开发者”热图 | 图源:漫画《Poorly Drawn Lines》

     

    业余生活

    闲暇时,我会读一些枯燥乏味的书,比如“干净的代码”、“重构”和“领域驱动设计”。除了教科书,我还会在网上读一些文章,这些文章里时常会有一些建设性的建议,或者看看别人的编码教程。

    我更喜欢听关于编程的播客,在上班的路上,没什么比听别人谈论代码更好的事情了。因为到达上班地点,我也要整天讨论代码了。

    除了通过网络获取资源外,软件工程师还将他们个人生活的大部分时间用于在线创建内容。我的个人爱好是开发一些没人见过的简单应用程序和游戏,比如 Crossy Block,它是 Flappy Bird knock-off的仿制品,还有corporate BSgenerator。这是在浪费时间吗?也许吧。但是,当人们看到这些应用程序时,是否也能让他们在两分钟内感到快乐呢?当然是。

    Corporate BSGenerator app

    编码给了我一个机会,让我可以去创造一些东西,并赋予了我创造力。它让我对生活有了新的看法,甚至可以说是重塑了我的生活。软件工程使我能够解决困难但有趣的挑战,并希望能够用自己微不足道的力量使人们的生活过得更轻松。软件工程有助于我的职业发展,使人有机会不断学习,并从中受益匪浅!

    好吧,我不得不承认,我热爱编码。

    一起分享AI学习与发展的干货

    欢迎关注全平台AI垂类自媒体 “读芯术”

    (添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

    展开全文
  • 二、实验项目名称:密码基本编码实践 三、实验学时:6学时 四、实验原理: Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,它是一种基于64个可打印字符来表示二进制数据的方法,可用于在HTTP环境下...

    实验地点:E楼III区503 实验时间:11.17
    一、实验室名称:攻防实验室
    二、实验项目名称:密码学基本编码实践
    三、实验学时:6学时
    四、实验原理:
    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,它是一种基于64个可打印字符来表示二进制数据的方法,可用于在HTTP环境下传递较长的标识信息。
    Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。
    五、实验目的:
    1、学习密码学的基本编码方法,包括利用python库函数进行编码、解码,异或编码等;
    2、理解明文、密文、密钥等概念,并对简单的密文进行破解。
    六、实验内容:
    1.Convert hex to base64 (编程将十六进制的字符串转换成base64编码):
    编程将如下的十六进制字符串:

    49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d
    

    转换成如下的base64编码的字符串:

    SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t
    

    注意:之后的实验会用到本题的程序。
    2.Fixed XOR (将两个等长的十六进制字符串进行异或)。
    编程实现两个等长的十六进制字符串的异或,如果你的程序能正确运行,就可以将如下的前面两个字符串异或成第三个字符串:

    1c0111001f010100061a024b53535009181c
    

    … after hex decoding, and when XOR’d against:
    686974207468652062756c6c277320657965

    … should produce:

    746865206b696420646f6e277420706c6179
    

    3.Single-byte XOR cipher (一个字符串被单字符加密,请找出该单字符)
    如下是一个被单字符异或后得到的十六进制的字符串,请找出该单字符(即密钥),并解密该密文。

    1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736
    

    提示:利用英语字母频率,穷举法。
    4.如下密文中包含一个含60个字符的字符串是利用单字符异或加密得到的,请找出该字符串。
    密文如下:

    0e3647e8592d35514a081243582536ed3de6734059001e3f535ce6271032
    334b041de124f73c18011a50e608097ac308ecee501337ec3e100854201d
    40e127f51c10031d0133590b1e490f3514e05a54143d08222c2a4071e351
    45440b171d5c1b21342e021c3a0eee7373215c4024f0eb733cf006e2040c
    22015e420b07ef21164d5935e82338452f42282c1836e42536284c450de3
    043b452e0268e7eb005a080b360f0642e6e342005217ef04a42f3e43113d
    581e0829214202063d70030845e5301f5a5212ed0818e22f120b211b171b
    ea0b342957394717132307133f143a1357e9ed1f5023034147465c052616
    0c300b355c2051373a051851ee154a023723414c023a08171e1b4f17595e
    550c3e13e80246320b0bec09362542243be42d1d5d060e203e1a0c66ef48
    e159464a582a6a0c50471310084f6b1703221d2e7a54502b2b205c433afa
    ec58ea200e3005090e1725005739eda7342aed311001383fff7c58ef1f11
    01305424231c0d2c41f105057f74510d335440332f1038ec17275f5814e1
    05f12f380720ea2b19e24a07e53c142128354e2827f25a08fb401c3126a6
    0d17272f53063954163d050a541b1f1144305ae37d4932431b1f33140b1b
    0b4f070f071fe92c200e1fa05e4b272e50201b5d493110e429482c100730
    100a3148080f227fe60a132f0c10174fe3f63d1a5d38eb414ca8e82f2b05
    0a19e83c58400a023b13234572e6e4272bf67434331631e63b5e0f00175c
    54520c2ceb45530e0f78111d0b0707e01e4bf43b0606073854324421e6f9
    09e7585353ee4a34190de1354e481c373a1b2b0a136127383e271212191f
    0f060d09fb4f2d5024022c5ff6463c390c2b5f1a5532071a31f33503fcea
    371d39121605584f48217235ee1e0602445c162e4942254c071954321d29
    4a0900e63e5f161e15554045f3594c2a6a77e4e52711602beaf53ae53bed
    29011616565d2a372a605bee39eced31183fe068185c3b445b391fe53232
    e4102337000303452a1e2f2b29493f54ed5a037b3e08311b625cfd005009
    2d560d4b0618203249312a310d5f541f295c3f0f25235c2b20037d1600f3
    2c245155e8253708391a7ceb0d05005c3e080f3f0f0e5a16583b111f4448
    493804044d262eec3759594f212d562420105d6a39e70a0f3957f347070c
    e72d1d1f103807590f4339575e00381074485d2d580249f744052605e11d
    e131570ae95307143a71131729552d001057a4540a1f425b190b572dee34
    2c1655342f02581c202b0a5c17a358291e1506f325550f05365e165c1c5f
    e318164df80b043e5406296e5359271d152f552e155a43eda81f23231d1c
    001de0413e174e18192c061e4b3d1b5626f90e3e1429544a20ee150d0c20
    32e902193219033c58191302441a5c1b584825ea140c290927aaea53e23c
    3a36363a732e32ea3f0e430508204b332c382a19292d5b291122e123446a
    1804115614031f5f571f2b143c5d3c1b257a4b37350f18445a3e08341c3d
    21f2fb250b2e55151e77253a3f0e5f4b2030370a4155e720e73914e35a4a
    510a55583a3c491221397c123a2b14a8305b3b09e71b241d0e51202e1a32
    1b51202f4917232b512a141d6812f03c455df05e5a1c2cee14390b3b593a
    5f5731e5203116ee131a4a4b24112cef5d0822f035e6547d3a0014462f26
    0028fb522104f771501a555d3f581e30e9ec3e49e3e63123432f07794145
    1459f6312f000e5a1373e346e40f211e1b0b0e17000f391f170552150500
    7e301e18325717e3412e022f087be30e5641080151357714e0e0eee15e11
    533258e9360f513b083aa51d2824222f40200a470537ecec392d31070b38
    07e32c180dfa56496a461627542115132a4c284050495b23e2245b093159
    2d3c230a1e5a300f6c3e26ed0d1709434950fd6f1e121335054129e4e4ec
    ef22fa2112311b11584ce43434f46f521a215433f9514fe33d313a3e0838
    34e7f336270c08010f2f544f0f1c1e235c0222644c2632efec061de2115f
    121a42395d4c560d213b0c0a26a7e4f4382718153d5e511158a10b2c021e
    e05d414dfa40222f0c382a03235f4d0d04372d4b7855105e26e44f2e0555
    7f3a4f1351f85b0344223e1177e14707190c0e311f4ca633f5f3e9352372
    01424d5d1a322a0d381717130e181d07240c2c19ecee750b1a37085d014c
    16012c5de55a0314a8260e2759e439123ca0c81c321d454e4e0ee14f4c1d
    0b1415512f38580e4e2a227def242643183c224f0ea146443403022fe9fd
    43eb2b1078322a02192d5b5e0c360d584d0b5e2c13072912ee32f03f4155
    002a52553e08361b0be0074b573e201c164c093a5c0f0159333b59770d5b
    38e63c1c5244301a5a01f26930321256143e1ae05e1120a9eaf20a192d58
    7d54140a152ef4035f09083ded531ee04df55848020656a1342e502649eb
    0c211dfe101702015516341136252f3f06f73247133113f5642d083a3417
    015e3d51433f3c003e5e28030b1d413eee186824504b241e0f0d32373e2b
    2d465040ec130c5c0e2704aa17010c40095207223669110f22f45ea155f7
    14552e2b341e5ce0195351066a23e3283e0ee935444b255a1c5c3cef7614
    372b453d5a357c05142be65b3c17f92d2b134853390a312bf92a531b513d
    5658265f4c0ce4440a20322f591a413034292b312206a01be6453a512d21
    1c585c19f31f785324f8583d1ee02620342b10a236263f105011ee5b0e14
    0f522b550818591a752e5fea0e033322ee5e280a4a1b244f5a2b35341255
    39093c1ced331b264127173f1312e2455fa33b31012c1f4d073c553f5d5e
    18f82d5d07e2430b3b3c1b5b49effb0313173f5d4a2e5c134555ff6b1d1a
    550a20234202726341190311295254f4064205aa515ae0145a23071c4e18
    3f2047024e3ce4555a1b39fa145455012c3afb0f2d11134846182e3c575b
    e3e456571937762828065443153b51152e262f09c937024405284f236432
    012f580c3536ec5c021574541d5c41123a4e661d5f0f5f344a083e3a5e4c
    4216252d01eb0a2a4623621b48360d312c29f33e380650447617124b3e71
    54141e59323606390204e95f1206520e5c084510034d30171c5e744f335d
    1e30061401600b342e171059526d1949431a3f412f56594c183711ea4837
    3131254f11e76f550e1e4d26f1391f44363b151c31281ff45259351da0e6
    5def250d0f3505385f22e9f4112633005d272d092e0138275851f943e90e
    0939165718303b445210095c16390cf04f19450e06f4545c0a0c320e3e23
    1e0b0b1f573f3d0fe05d43090fa8482242300819313142325b1f4b19365b
    0d3b2a5d271e463d2203765245065d5d684a051e5815265b52f3171d3004
    6af423303817a43324394af15a5c482e3b16f5a46f1e0b5c1201214b5fe4
    4030544f3f51151e436e04203a5e3b287ee303490a43fb3b28042f36504e
    1a2d5a03fc0e2c04384046242e2b5e1548101825eb2f285f1a210f022141
    122355e90122281deeed3ba05636003826525d5551572d07030d4935201f
    2a3c484a15410d3b16375d4665271b5c4ce7ee37083d3e512b45204f17f6
    03222801255c2c211a7aeb1e042b4e38e8f1293143203139fb202c325f2b
    06542a28041956350e292bf3fe5c32133a2a171b3a3e4e4e3101381529e3
    4a5209ef24e5f3225e503b143d0e5747323fe7ee3d5b1b5110395619e65a
    1fee0a3945563d2b5703701817584b5f5b54702522f5031b561929ea2d1e
    e7271935100e3c31211b23113a3a5524e02241181a251d521ff52f3c5a76
    144a0efee02f0f5f1d353a1c112e1909234f032953ec591e0a58e55d2cf4
    efee0cf00d0955500210015311467543544708eb590d113d30443d080c1e
    1a562c1f7e2b0030094f051c03e30f4d501a0fe22a2817edfc5e470c3843
    1c3df1135321a8e9241a5607f8305d571aa546001e3254555a11511924
    eb1d3f54ec0fea341a097c502ff1111524e24f5b553e49e8576b5b0e1e33
    72413e2f5329e332ec563b5e65185efefd2c3b4e5f0b5133246d214a401d
    352a0ae632183d200a162e5346110552131514e0553e51003e220d47424b
    1d005c58135f3c1b53300c3b49263928f55625454f3be259361ded1f0834
    2d2457524a1e1204255934174d442a1a7d130f350a123c4a075f5be73e30
    0c0518582d131f39575925e0231833370c482b270e183810415d5aec1900
    453b181df1572735380b0446097f00111f1425070b2e1958102ceb592928
    010a4a2d0b0926082d2f1525562d1d070a7a08152f5b4438a4150b132e20
    2b395d0d5d015d41335d21250de33e3d42152d3f557d1e44e4ee22255d2d
    4a1b5c272d0d1c45072639362e402dee2853e51311262b17aa72eb390410
    e7015f0215352030574b4108e44d0e1a204418e62325ff7f34052f234b2d
    1d563c13202346071d39e34055402b0b392c27f552222d3deb3843ee2c16
    29332a521f3c1b0811e33e1a25520e323e75e01c17473f55071226120d3d
    210b35ee1a0a5335222e35033905170c4f3104eb032d425058367d5a2bf2
    1e553809415efb1c460f2f0ffafaec491e4d4e49510452e8245a366a4106
    e1f92cee0e10142514e7ec13155c412fe901092f1f0fa738280c5eee5e04
    3526291e0b2a5f486a3051041f4c16372f5402e6f70b31a03525190b161a
    260e5e1f0c2e4d7528ef11552fefe247201e4752085c1da903563c162a4b
    2a14ff2e3265e604075e523b24455c364a7f284f3a43051d52152f1119e8
    5f02e55a4b1300063640ef10151002565f0b0c010033a1cbef5d3634484a
    1b121c585b495a5e033a09037f2d1754072c2d49084055172a3c220bed4f
    1613400e1632435c0018482aa55b363d26290ae4405ded280f2b0c271536
    4011250ce02119464a1de43113170356342c272d1d3355555e5706245e0a
    16272d5e545953002e10020875e223010719555410f91ce518420e382456
    0d4037320345f945241a1d090a545a310142442131464f4d10562ae4f05a
    07ee4d4ae12e571e313c1636313134233e495459e548317708563c2c1b2f
    e75803294b36565225552c3406304f0201e43323291b5e0e2159025c2f25
    5e63194411490c44494232237e1b323108573d3f391d1f3537e4165a2b35
    51000a3a264c503b5852072a5636f04f5cea58a42838f5fca876415c3521
    3c14130be511275932055a30aa2d03470c51060009f210543002585f5713
    10f0370c5823115200e5015d083e2f1a5df91d68065c1b03f0080855e529
    02ec00f1462d034123151ba6fc07eb3d5e54e85a3f3ee532fb41791a060b
    0c29274232f93efb3d465544e45e491b042ced245100e3f05c14134c254b
    5741235f051e080401a8013c065627e8ee5432205114243d54320e133f2d
    4a4d181635411f5d084e31ed230c16506d5125415e060e4dcd0e5f3708e3
    2d531c3e22065a5eee07310c145305131800063e4a20094b2006ea131240
    e7335c1c4308160be6aa551a0f5a58243e0b10ee470047683c345e1c5b0c
    5434505ee22a18110d20342e4b53062c4d79042a0a02422e225b2523e95a
    3252212407115c07e15eee06391d0519e9271b641330011f383410281f0e
    2cee2b355233292b595d1c69592f483b54584f7154fd4928560752e333a1
    17272b272f110df5e91c560a39104510240b5c4b0c1c570871e422351927
    c32550ec3f132c0c2458503ae5241d3c0d7911480a073826315620403615
    16e11c270d2b010650145de2290b0beb1e120a3a354b2104064f3b533c4e
    505746313d4d2e3455290a281ee81d50007e1148252528025237715a342a
    1c0a13163e404e40242142061d34185421160220fa031f7a423a08f2e01a
    101d303802f51b0c08ef461259315b553823e622a12d565509e23c624139
    0a3d1309e4384c0eed383846545a035a41ee1771513b090a031e15f45159
    2d4944092a1965542507003b23195758403e175a0a450c5c38114de21141
    eb100fe63a031c4b35eb591845e428441c0d5b0037131f5c160a31243619
    c155ef0d19143e24392507a202581a25491b135c27571d5c5b35250f0bef
    0e1d510556485e39557e044e2cf10457523016473f500b1e36370c17591c
    7e5a19250a5e152b46f5130a094cef08e84704ef10197324464b0114017a
    3b56f126390008343d3c400232ed201667211f0b1a1413080202530b08e2
    4912321b61c90a0cf6ef0a0a0c0f17fa62eb385e2616194526701aff5fe6
    2c57114b0400152d4f2aeb18ed41386c2e3a023a281d1a311eefe750ebab
    3a4353282114593b3e36446d2c5e1e582e335337022930331f211604576a
    295f3bfae9271ae8065a3b4417545c3e5b0df11a53351c78530915392d2e
    074a122ee01b17131e4e124e2322a9560ce4120e37582b24e1036fe93f30
    3c08290121090ef72f25e4f220323444532d3fe71f34553c7b2726131009
    12e84a3308590357a719e74c4f2133690a20031a0b045af63551325b1219
    0e3d4fe03f56523cf40f29e4353455120e3a4f2f26f6a30a2b3e0c5b085a
    57f3315c33e41c0f523426232d0651395c1525274e314d0219163b5f181f
    53471622182739e9e25b473d74e1e7023d095a3134e62d1366563004120e
    230a06431935391d5e0b5543223a3bed2b4358f555401e1b3b5c36470d11
    22100330e03b4812e6120f163b1ef6abebe6f602545ef9a459e33d334c2a
    463405faa655563a43532cfe154bec32fe3345eb2c2700340811213e5006
    14241340112b2916017c270a0652732ee8121132385a6c020c040e2be15b
    251119225c573b105d5c0a371c3d421ef23e22377fee334e0228561b2d15
    2e4c2e373b434b0d0b1b340c300e4b195614130ea03c234c292e14530c46
    0d2c3f08560ee32e5a5b6413355215384442563e69ec294a0eef561e3053
    193c100c0b24231c012273e10d2e12552723586120020b02e45632265e5f
    2c175a11553d4b0b16025e2534180964245b125e5d6e595d1d2a0710580b
    213a175ff30855e4001b305000263f5a5c3c5100163cee00114e3518f33a
    10ed33e65b003012e7131e161d5e2e270b4645f358394118330f5a5b241b
    33e80130f45708395457573406422a3b0d03e6e5053d0d2d151c083337a2
    551be2082b1563c4ec2247140400124d4b6508041b5a472256093aea1847
    7b5a4215415d544115415d5015455447414c155c46155f4058455c5b523f
    0864eb4935144c501103a71851370719301bec57093a0929ea3f18060e55
    2d395e57143359e80efffb13330633ea19e323077b4814571e5a3de73a1f
    52e73c1d53330846243c422d3e1b374b5209543903e3195c041c251b7c04
    2f3c2c28273a12520b482f18340d565d1fe84735474f4a012e1a13502523
    23340f39064e306a08194d544647522e1443041d5ee81f5a18415e34a45f
    475a392637565757730a0c4a517b2821040e1709e028071558021f164c54
    100b2135190505264254005618f51152136125370eef27383e45350118ed
    3947452914e0223f1d040943313c193f295b221e573e1b5723391d090d1f
    2c33141859392b04155e3d4e393b322526ee3e581d1b3d6817374d0c085b
    c2ea5821200f1b755b2d13130f04e26625ea3a5b1e37144d3e473c24030d
    ee15025d2019f757305e3f010e2a453a205f1919391e1a04e86d1a350119
    1a5beb4946180fe0002a031a050b41e5164c58795021e1e45c59e2495c20
    1121394f1e381c3647005b7326250514272b55250a49183be5454ba518eb
    1ee55936102a465d5004371f2e382f1d03144f170d2b0eed042ee341eb19
    ec1014ef3ff1272c3408220a41163708140b2e340e505c560c1e4cf82704
    274b341a454a27a0263408292e362c201c0401462049523b2d55e5132d54
    e259032c444b091e2e4920023f1a7ce40908255228e36f0f2424394b3c48
    34130cf8223f23084813e745e006531a1e464b005e0e1ee405413fe22b4e
    4af201080c0928420c2d491f6e5121e451223b070dee54244b3efc470a0e
    771c161f795df81c22101408465ae7ef0c0604733ee03a20560c1512f217
    2f3a142c4155073a200f04166c565634020a59ea04244ff7413c4bc10858
    240d4752e5fa5a4e1ce255505602e55d4c575e2b59f52b4e0c0a0b464019
    21341927f3380232396707232ae424ea123f5b371d4f65e2471dfbede611
    e10e1c3b1d4d28085c091f135b585709332c56134e4844552f45eb41172a
    3f1b5a343f034832193b153c482f1705392f021f5f0953290c4c43312b36
    3810161aea7001fb5d502b285945255d4ef80131572d2c2e59730e2c3035
    4d59052e1f2242403d440a13263e1d2dea0612125e16033b180834030829
    022917180d07474c295f793e42274b0e1e16581036225c1211e41e04042f
    ec2b41054f2a5f56065e5e0e1f56e13e0a702e1b2f2137020e363a2ae2a4
    53085a3b34e75a1caa2e5d031f261f5f044350312f37455d493f131f3746
    0c295f1724e90b001a4e015d27091a0b3256302c303d51a05956e6331531
    e42b315ce21f0def38144d20242845fa3f3b3b0ce8f4fb2d31ed1d54134b
    2957023141335d35372813263b46581af6535a16404d0b4ff12a207648ec
    e4421e301de25c43010c504e0f562f2018421ce137443b41134b5f542047
    0c5600294e085c1d3622292c480d261213e05c1334385108c145f3090612
    062d2e02267404241f4966e6e010052d3224e72856100b1d22f65a30e863
    324950394700e11a01201a0564525706f1013f353319076b4c0d015a2e24
    2a1be80e2013571522483b1e20321a4e03285d211a444d113924e8f41a1f
    27193ae2302208e73010eaa1292001045737013e10e4745aed2c105b25fb
    1b135d46eaef103e1d330a14337a2a4302441c1631ed07e7100c743a0e35
    1a0957115c293b1c0de853245b5b18e2e12d28421b3230245d7b4a55f355
    e7360e2b3846202a2926fa495e3302ed064d127a17343a1f11032b40e8f5
    06e8f90a3118381c5414157d1434050210363e30500511a00a3d56e10438
    30021931f7193e25a0540ef52658350929380974fb035b1a5d2c042959c7
    151b0c24052d0e56025404390e5a3909edec0d03070f040cff710825363e
    2a2328120b2203320810134a0c0a0ef30b25460bec011c1e26e913575a51
    e12d0948ed3c511416151d1c54082b3e385d14f838510bec4e4b5f585321
    1559305c3a49192a010f04ec11001a3d5a5621e5535358353206521f013f
    172c2c155a3a322009505c290516a2c4e4405a1e0a1e353b6e1a5a4e2f09
    552c34e2432b0df1132b130841000d4007232339a2092a593f142b0a0117
    0931432e452d3aea1d02587d3a3e56ed2a3050e2f9363df366331e421947
    0250094823545b20163f1d0a36a92228ed25564d1a304deae8035c32370d
    4314380e264e2359e6a412504a424328e84434ff30236649353315344a00
    25e33540550d3c15135b0eed451cfd1812eaf2063f085d6e214d121c342f
    37513b2d0a4e3e5211372a3a01334c5d51030c46463e3756290c0d0e1222
    132f175e4c4af1120138e1f2085a3804471f5824555d083de6123f533123
    0de11936062d3d2f12193e135f38ff5e1a531d1426523746004e2c063a27
    49241aee1802311611a50de9592009e936270108214a0c4213a01f09545f
    02e14d2babee204a5c4337135821360d021b7831305963ee0737072f0deb
    1512371119050c0c1142245a004f033650481830230a1925085c1a172726
    3be62f230a4b50526ec9345100252aa729eafa59221b3fa517304e500a15
    5e57f231333c3d0c470a47551733511031362a3bed0f334a3f3136104230
    eb24015d051a151f245905061a37ea273d2239fe02463a5e314d565f0457
    23025f415d290a594e3b5940313347a11c5e41531ff15a385a183829780a
    51e0035f2deb3b163eabe8550e2e0414491f573b5419234a28183044e112
    1d54e8390b26585f3aef5f14206672240c4a5e5d31e01b4d406e351401fa
    e555173e242c753b275d4ee50b2f26501402a71b1b5733ec19ee34284aed
    2ee8f023401c09383b084d623ef324ee5a33065a6d5e365b092c5d0d4501
    3f4e024d4b161e144d5e3b140d1e2944465b491d265603a705373c231240
    544f0d4ea6091e00e62d3e130d4f005139f339001a3b480c221b730be75e
    5f1f4f3e0a0dec3b5128e32960e42d0fee02275528154b10e65c36555a2e
    ea3e311b5b0f5f220b1f1b2914f12111f41213e06232224df5ec0114470d
    51203f1e01e5563851284013514a565e53125223052f47100e5011100201
    3f5bee2305217838582be55958a00245265b0308ec56525b5c114c2d5407
    e6e74818e53602160e45372029eb4de72754ec3f49290d2f5901014c0e7f
    08e715e612380a5c1908285a1222073a023c562907384e4f470444483f34
    1110382b5225343ba6092133483e2d683e1e280227084a1e405e3a341513
    415f240f0c53e3f7196e2252fb0105347f345e531f535a344bf439220916
    5722e7f7fa2f4c2e057e2a025e2dec31413439aa12265f5a3458f81a4b15
    135839401856f337a72fec475a060de239a650163a55392a5b303f051415
    56090f18023a2b16e2364407050d48e1541408281d3aa3e84c5b264c1f33
    1725f9540aec5e10ed293e4e5a5a2d2125f053251a55395d1c2044022231
    292d523ff86a180620075f325e02566659f30423525a053a01f0087f4b3b
    17fe493808f25309251e1325596ce32b42311e5d0c2f58652640582a4b17
    67381a5afb7128150a0043e45b173d2111155c49092d2635370a3a201826
    e62d021d36e03b205d5f1f295c094608342a412122583f3bfc34190be62c
    393a055f59060d454a235326e844243a30285c14e316272524f4f0444f51
    352c3c5b2b5845244f55494940194721f80b120f07392b7c2c5a0508111e
    2f1219430151e60f11150b101e295736361b1e053e4d08f83f230e2c383a
    ef5b1d492610e834330f5cf3a2485d324f2822084f41111f582957191b19
    1e3e223704fe1d2e1f592753e5550f15170b231b4234e945301f5605a670
    300d322759ea0337015c662a0e073809543f2741104835512d0624551751
    373727ef1f41084d0b5c0c0137283b1337026aea1c5ae115064ffa183402
    09152b11e1233e5a0e302a521c5a33181e180026463744a82c024b4bf04e
    1df61df1263fee59135c13400950153d3c5c59183b020b1d2d2c492f4968
    e2000c405a01ede30c4c082e2537443c120f38fc57c43651423e5c3beb1d
    1922182420191b293e163d58020b005f454a0621051a38e80b090a463ee9
    39513f2d47042c0fe5134419ec48490f150f323a5ee7a7e0201e193a5e1b
    2037200a2b1013567b35fb4a0f322c2f49435d091920521c302b413f5f35
    775d1a345b483b35a02a4c3e17ee3a3d5a5b57153613264f23041922432f
    35125b3e0a1d2257eb002a26455e1a2f042e1545e92f0b3408032c4f3551
    2d4c392321300a18ed4f3e2c314d20500052aa3917e55d0d29500754282e
    381b2e263758f63c474a1c23110c2d5f1c220412e91043580656080c0427
    081ce1e5350b6a3535f0e6592e5b543432340e38f008e0324102e45a3f25
    30040c181615362e4d1016160a4a5c006eeb1d2422355a3f1028ff192a07
    53f6354d4b5d121974245c14f0225713331f2e381810101428571725e432
    1a2c06372d5b1419742150042d25003c2650512834ef16e51d183f0f0508
    3d191107251100ee2e4125405a44174f061e0e1e5959e606530e06ed245e
    3f592d47512dec5922500e460e1de7183b4c3c2e583942255a0c5d4d2305
    3438001e482a002d56113a1fe13bed542d3508e22f4e22221431121c1539
    ed445a5d28415073eb18022ef836274d573a48090f2a663058194901405d
    215b143954fc313c1e28584b51e729ef31013b232bfb4c52e2322a2d4557
    5244102e1c3d304450ee01761924e62ff2173305e15809102b2125284dfc
    171a3f010f3639056f2be71c2047581de32e05a20833e1221b0e25362459
    2958280de238084f5a1c292e005be71f3b311e1f415809383d3862260238
    361f56ecee120156375862eb3627185c2519545149e2e50b1f3b0c4e3352
    e6115f440634e4005d273611e41c5d383c3814537b3d23362b084024345b
    10370656372e0236eb4f3303e216505f0e465228383729394faa2f205f34
    2e125b2f2c1d0f1f170e0c51331f0c06291610345c0603791f33253f0e0c
    1c2b080526133aeb3e23571d4cfa1e48057a2a010a490a50391b09514f2e
    59383ae11237e5450029162d2e1d3e09221a160e42ea06ea0ca7c7ecf4ea
    3d3024f34d5c07464bea3b185e110d3a10395d3b2632343cf30ca2e6065a
    262f111c0e15441a4825111b185f1e5756243206125f4603e97e79582d27
    2d5801ee2654113e2da00b58e9260d643c10423e1d1f42093b0d0f7d5102
    3649211f210456051e290f1b4c584d0749220c280b2a50531f262901503e
    52053e3e152b5b2b4415580fec57ef5c08e5ed43cc2d2e5b40355d0d2017
    6d3917263f030c4b55f0025d501e57504a122729293c4c5819680d3001ed
    1e313323324e5e177b171cf70c371541395c0e2b7726e42505483014362e
    1910e4f7253f0a012057e03b1e3b4201362b224ff60e0b3a1d115b043957
    200c1e0b242e5e3b4755f61e3be05c040908f1234358e55562711d2efa0f
    0737e0160b1d13132044080d2325f1f0ee2f00354f2106471131020a5d0b
    3f21060de62c052a17576e2ce729242b3e3621300627f01e52580a480050
    1b381a11351f4f5d22040c3c4b3e7d263714e8e61a571d107a34260a4a51
    edf52314e111207c0b23eb482f441d211f306137152407040e08530a783e
    3c054e2d4e2905275e640220f74f1a193f54e1ed5b4e2a290eab27a55147
    33522817335316ea2f3df957e25e02030601514f09f74c2fedee102d3114
    5d05231d03313826164156110c44e4111f4658005e115e300f413b430300
    380bf53a4331f74627492c133fe8eb3141ee39040def040c1a0ae914e3ed
    5b00f0211f0a091e05582e22f05a5d262e0ce352251d25100b102b11e339
    36053935f051f959093252411e2d5af81f360c0fa15d0b373b1d26323b77
    501424184202206215e05944505c4817514540445b0207025de05b050932
    0a5a114515536f553a352c513f0b12f700345fa51d5efb28222676e559ea
    561b0557403f5f534a574638411e2d3b3c133f79555c333215e6f5f9e7ec
    6658f7210218110f00062752e305f21601442c5310162445ed4d175630f3
    0e2154253c4a22f02e1b0933351314071b521513235031250c18120024a1
    e03555453d1e31775f37331823164c341c09e310463438481019fb0b12fa
    37eee654410e4007501f2c0e42faf50125075b2b46164f165a1003097f08
    2a5332145851553926523965582e5b2f530d5d1e292046344feaed461517
    583d2b06251f551d2f5451110911e6034147481a05166e1f241a5817015b
    1f2d3f5c310c315402200010e24135592435f71b4640540a041012ee1b3f
    5b2010060e2f5a4d045e0b36192f79181b0732183b4a261038340032f434
    3a5557340be6f5315c35112912393503320f54065f0e275a3b5853352008
    1c595d183539220eec123478535337110424f90a355af44c267be848173f
    41053f5cef5f6f56e4f5410a5407281600200b2649460a2e3a3c38492a0c
    4c071a57e9356ee415103c5c53e254063f2019340969e30a2e381d5b2555
    32042f46431d2c44607934ed180c1028136a5f2b26092e3b2c4e2930585a
    

    七、实验器材(设备、元器件):
    学生每人一台PC,安装Windows 7操作系统及VC++\Python开发环境。
    八、实验思路,代码及运行结果:
    将上述四个题目的解题思路或方法,代码和运行结果分别写在下面。
    **1.**解题思路或方法:
    第一小问要求我们编程将十六进制的字符串转换成base64编码,这一小问大体分为两个步骤。第一步将十六进制字符串转化为ASCII码,进而得到字母串,即明文信息。第二步则对明文字符串进行base64加密。
    先来看第一步,将十六进制字符串转化成ASCII码值得到明文信息。使用以下语句:
    m= binascii.unhexlify(hex_string)
    其中,binascii是Python中的一个模块,在这里将十六进制字符串转换成了ASCII码值,而unhexlify将十六进制字符串转换为可视化的字符串。如果此时进行print(m),则可得到明文信息如下:
    在这里插入图片描述
    第二步,将上述的明文信息进行base64编码加密,Base64的编码规则是将3个8位字节(3×8=24位)编码成4个6位的字节(4×6=24位),之后在每个6位字节前面,补充两个0,形成4个8位字节的形式,那么取值范围就变成了0~63。又因为2的6次方等于64,所以每6个位组成一个单元。也就是说,加密时先把字符串中每个字符对应的十进制ASCII码值转换为2进制, 比如a的ascll码为97, 97的二进制是:01100001,然后把每个字符的8位二进制数都连起来,每6位分为一组,最后再把6个二进制码转换为Base64对于的编码。在本次实验中可直接使用Python中的base64模块。

        encodestr=base64.b64encode(m) 
        return str(encodestr,'utf-8')
    

    我使用的是Python3的版本,所以字符都为unicode编码,而b64encode函数的参数为byte类型,之前unhexlify得到的字符串是byte类型的,所以无需转码。而得到的encodestr必须进行转码,我在这里使用’utf-8’进行转码。转码后,输出加密后的密文结果。
    在这里插入图片描述

    运行结果:
    在这里插入图片描述
    2. 解题思路或方法:
    第二个实验要求我们编程实现两个等长的十六进制字符串的异或。
    为了实现两个等长的字符串实现一对一的对应异或,使用Python中的zip()函数对字符串进行分组。zip函数进行分组,返回一个列表 (x,y),例如(‘1’,‘6’)(‘c’,‘8’)等。
    x^y是按位异或,实现每个zip列表中两个数的异或。
    %x 无符号整数(十六进制) 故 %02x是输出两位十六进制,字母小写空缺补零。
    核心代码如下:
    m_a=binascii.unhexlify(a)
    m_b=binascii.unhexlify(b)
    result =’’.join("%02x" % (x^y) for x, y in zip(m_a, m_b))
    输出最终结果为:
    在这里插入图片描述

    运行结果:
    在这里插入图片描述
    3. 解题思路或方法:
    第三小题要求在已知被单字符异或后得到的十六进制的字符串的条件下,找出密钥即该单字符并解密该密文。提示中提到了英文字母频率和穷举法。
    穷举法给我的启示是,将单字符的取值范围0x00-0xFF这里面总共256种字符(包括不可打印字符在内),都用来作为密钥对密文进行解密,看哪个单字符得到的结果更符合实际语句,从而确定密钥和明文。因为这个被加密过的字符串是被单字符异或得到的,使用这256个字符作为密钥,与加密过的字符串进行异或便可以得到256组明文。
    英文字母频率是用来判断语句是否符合常用的语言规律。每个字母在语句中出现都有不同的概率,可以通过这种频率来判断我们得到的256组明文是否符合常理,通过比较判断,找出256组中最合适的字符串作为明文,相应的单字符作为最终的密钥。
    英文字母频率如下:
    FREQUENCY_TABLE = {
    ‘a’: 0.08167,‘b’: 0.01492,‘c’: 0.02782,‘d’: 0.04253,‘e’: 0.1270,‘f’: 0.02228,‘g’: 0.02015,‘h’: 0.06094, ‘i’: 0.06966,‘j’: 0.00153,‘k’: 0.00772,‘l’: 0.04025,‘m’: 0.02406,‘n’: 0.06749,‘o’: 0.07507,‘p’: 0.01929,‘q’: 0.00095,‘r’: 0.05987,‘s’: 0.06327,‘t’: 0.09056,‘u’: 0.02758,‘v’: 0.00978,‘w’: 0.02360,‘x’: 0.00150,‘y’: 0.01974,‘z’: 0.00074, ’ ': 0.1918182
    }
    定义一个子函数score,这个函数的作用是返回分数值,该分数值是输入数据的每个字母的概率之和。如果一个字符串的分数值比较高的话就可以认为这句话在平时中是比较符合逻辑的。所以认为是正确解密得到的字符串。

    def score(input_bytes):
        score = 0
        for byte in input_bytes:
            score += FREQUENCY_TABLE.get(chr(byte).lower(), 0)
        #chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
    return score
    

    定义下面这个子函数,功能是求解明文,使用密钥与密文异或来解得明文字符串,将结果返回。

    def singlechar_xor(input_bytes, key_value):
        output = b''
        for char in input_bytes:
            output += bytes([char ^ key_value])
        return output
    

    下面是判断明文得分的部分:
    尝试单字符密钥的每个可能字节,用该字节解密密文并计算每个明文的英语分数。得分最高的明文可能是使用正确的key值解密的那个。

    def singlechar_xor_brute_force(ciphertext):
        candidates = []
        for key_candidate in range(256):
            plaintext_candidate = singlechar_xor(ciphertext, key_candidate)#明文
            candidate_score = score(plaintext_candidate) #计算得分
            result = {
                'key': key_candidate,
                'score': candidate_score,
                'plaintext': plaintext_candidate
            }
            candidates.append(result)    #往列表的尾部添加新的对象
    

    运行结果:
    在这里插入图片描述
    4. 解题思路或方法:
    这一小题和第三小题的思路大致相同,而且可以使用在第三小题中定义的子函数。因为题目中给我们的字符串都是以六十个十六进制字符为一行的,所以可以将数据放在文本文档中,然后把数据一行一行读入。和第三问的区别在于,第三问是固定了密文,只需找到合适的密钥来解密正确的明文,而这一题则不知道密文是哪一个,需要多一层尝试,即每一行都要作为密文进行一次与第三题相似的过程,然后将最后所有的明文字符串进行比较,筛选出最合适的明文和密钥。其他的与第三问一样,例如可以调用第三小题中判断明文得分部分的子函数,来比较哪一行字符串更符合语言逻辑。

    运行结果:
    在这里插入图片描述
    代码:
    完整代码请移步资源区

    九、总结及心得体会:
    之前三次密码写实验我都是用C语言去实现的,这次实验由于涉及base64编码,用Python相对简单,其实我对于Python的掌握并不熟练,仅仅是在大一的暑假理论性的学习了一遍,很少付诸实践去使用。这次实验不仅让我熟悉了密码算法,更是加强了我对Python的熟练度。
    十、对本实验过程及方法、手段的改进建议:
    利用英文字母频率法暴破是我受到题目的提示,在本次实验中采用的方法,我还在网上看到利用编码的汉明码距的破解方法。大体思路是将二十六个英文字母用八位二进制数来表示,它们之间的汉明码距是非常小的。例如,如果a-z分别代表0-25,那么他们的八位二进制表示也就是00000000-00011001,极端地来说两个字母之间的汉明码距最大也就是4。但是如果与一个单字符异或之后,它们的汉明码距一定会大幅度地变大。所以在判断256组明文是否是真正的明文时,只需算出其汉明码距之和,最小的可以认为是正确的明文。

    展开全文
  • matlab实现卷积编码'适合小白理解学习'

    万次阅读 多人点赞 2019-07-06 10:34:43
    matlab 实现卷积编码在maltab中有现成的函数来实现卷积编码。...我是一个小白,需要使用到matlab实现卷积编码所以了一下,看了一些帖子,的不是特别直白,不是很适合小白学习,所以尝试着一下。 卷积...
  • LZW编码的学习与实现

    万次阅读 多人点赞 2015-10-20 20:21:03
    看了一天,感觉终于搞明白了一点(代码终于对了),编码过程大四的时候过一点点,按部就班的按照步骤来做就行了,解码过程貌似课堂上老师没讲,自己看wiki上的讲解和example搞懂了。 LZW全称Lempel–Ziv–Welch...
  • 正交编码器学习(二)

    万次阅读 多人点赞 2017-11-10 14:25:31
    编码器的设计思想有多种思路,主要分为两种(1)定时器中断计数(2)外部中断触发计数。 STM32中包含了TIM_EncoderInterfaceConfig()函数[1]。其配置的定时器有编码器接口等功能,一般是定时器的通道1和通道2才能...
  • 地址:http://blog.csdn.net/u013357243一:效果输入地名,可以得到相应的经纬度,知识为了学习的小Demo 二:实现步骤一 :首先获取用户输入的位置。 二 :创建地理编码对象。 三 :利用地理编码对象编码,根据...
  • 在前面,这一次的实验相当有难度,完全自己体会很深刻,把C/C++对于文件读写部分的内容相当全面的覆盖到了,并且也对算法的设计有较高要求。 按照惯例我们还是先说说为什么要对图像进行编码。现在4K逐渐开始普及...
  • CTF密码--混合编码--writeup

    千次阅读 2019-10-21 22:13:21
    混合编码 题目来源: poxlove3 题目描述: 经过了前面那么多题目的历练,耐心细致在解题当中是 必不可少的品质,刚巧你们都有,你和小鱼越来越入迷。那么走向了下一个题目,这个题目好长 好长,你知道你们只要细心...
  • LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释 1、扩频因子(SF) 2、编码率(CR) 3、信号带宽(BW) 4、LoRa信号带宽BW、符号速率Rs和数据速率DR的关系 5、 LoRa信号带宽、扩频因子和...
  • 编码规范学习心得

    千次阅读 2005-03-08 17:25:00
    熊雄斌2005.3.2 以前程序的时候,一直很想能出规范的编码,但是何所谓规范,规范这两个字如何理解,我却一直没有找到答案。以前在处理这个问题时,我力求使用一些权威书籍上介绍的规则,然而并没有一个完整统一...
  • 香农编码 费诺编码 赫夫曼编码
  • ascii编码,Unicode和UTF-8之间的关系1,ascii编码,这是一种单字节编码,8位,一个char的长度。最多可以存放255中不同的字符。对于早期的计算机系统来说,对于应付英文字符和一些符号绰绰有余了。 事实上基本的...
  • mysql学习一之数据库的字符编码问题

    千次阅读 2019-01-15 22:34:49
    第一个,character_set_client 是发送数据的字符集编码。 第二个,character_set_connection是连接数据库时的字符集编码。 第三个,character_set_results 是返回结果时的字符集编码。 第三个,character_set_...
  • ASN1编码学习--荆轲

    万次阅读 2018-02-25 15:46:06
    ASN.1本身只定义了表示信息的抽象句法,但是没有限定其编码的方法,它与语言实现和物理标识无关。各种ASN.1编码规则提供了由ASN.1描述其抽象句法的数据的值的传送语法(具体表达)。标准的ASN.1编码规则有基本编码...
  • 这篇文章确实的不错,总结无监督学习的方法如下: 1)自编码器 2)聚类学习 3)生成对抗网络 4)设计不需要标签的无监督学习任务,直接从无标签的数据中学习模型 视觉表征:通过解决拼图问题来进行无监督学习...
  • HaffManTree哈夫曼树的编码和解码的个人学习心得感悟
  • 给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串str,请出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说122344111的p型编码串为1122132431;...
  • 编码学爬虫,封稿,最后一篇了,不来看看么?
  • 通过前面对ffmpeg中常用的几个api的源码分析,从而对api有了更好的理解。...仔细阅读它的代码后,我们可以按照自己的理解,自己的视频编码程序。我们将会把一个yuv420p格式的文件,使用h264编码器进行编码
  • 这是我在一个CodeProject网站上下载的一个外国人的哈弗曼编码程序,数据结构的朋友不可错过!!!
  • K-SVD稀疏编码字典学习

    千次阅读 2018-07-23 16:48:34
    1. 算法简介 K-SVD可以看做K-means的一种泛化...K-SVD通过构建字典来对数据进行稀疏表示,经常用于图像压缩、编码、分类等应用。 2. 主要问题   Y = DX Where Y∈R(n*N), D∈R(n*K), X∈R(k*N), X is a spars...
  • mp4v2再学习 -- H264视频编码成MP4文件

    万次阅读 多人点赞 2017-06-26 17:19:09
    一、H264视频编码成MP4文件参看:H264视频编码成MP4文件参看:mp4v2在VS2010下的编译与在项目中的使用最近做项目需要将H264文件封装为mp4文件,从网上找到了MP4V2库,下载下来后不知道从何下手,官方网站...
  • 已经定义的项目编码规则如果发生变更时需要注意的相关事项
  • 软件工程(C编码实践篇)学习总结

    千次阅读 2017-11-07 09:07:32
    软件工程(C编码实践篇)学习总结 原创作品转载请注明出处 Github地址:https://github.com/wsqat/gaoruan MOOC课程 : http://mooc.study.163.com/course/USTC-1000002006
  • 密码编码学-替换法

    千次阅读 2007-05-11 17:37:00
    不知道上次我为大家留的问题大家研究的怎么样,密钥是上次我提到的错位法,可能有点人按照错位法去解但还是没有结果,研究密码人的一样不要有固定的思维,任何一种编码学运用起来都是非常灵活的.现在我把密文解读一下....
  • 9.1、AutoEncoder自动编码器  Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 396,087
精华内容 158,434
关键字:

如何学写编码