node.js爬虫练习 爬取数据存储到mongodb

youkumovie(优酷电影目录) 本人的node.js爬虫练习,大神无视,一直更新,爬虫爬到数据存储到数据库中。数据库为mongodb。总共30页,每3秒爬一次,到目前为止亲测没有被封ip,本人第一次写爬虫,大家多多包涵! 用到的库 "cheerio": "^1.0.0-rc.2", "mongodb": "^2.2.33", "request": "^2.83.0", "request-promise": "^4.2.2" 代码 let rp = require('request-promise'); let cheerio = require('cheerio'); let MongoClient = require('mongodb').MongoClient , assert = require('assert'); // 测试爬虫 let index = 1; function main(){ if (index > 30){ clearInterval(timer); console.log("恭喜你,数据已经全部爬取完毕!") return; } rp('http://list.youku.com/category/show/c_96_s_1_d_1_p_' + index + '.html') .then(function (res) { // Process html... let $ = cheerio.load(res) let data = $('.title a').toArray() for (let i = 0; i < data.length; i++) { let videotitle = $('.title a').eq(i).attr('title'); let videolink = 'http:' + $('.title a').eq(i).attr('href'); let videoimg = $('.p-thumb img').eq(i).attr('src'); let videostate = $('.status').eq(i).text(); let url = 'mongodb://localhost:27017/test'; MongoClient.connect(url, function(err, db) { db.collection('video').insertMany([{videotitle:videotitle},{videolink:videolink},{videoimg:videoimg},{videostate:videostate}]) }); console.log(videotitle + '--数据已插入') } }) .catch(function (err) { // Crawling failed... console.log(err) }); index++ } var timer = setInterval(main, 3000);

November 3, 2017 · 1 min · 125 words · Norman Wang

mongodb下载 配置 可视化

mongodb下载 https://www.mongodb.com/download-center#community mongodb配置 在电脑磁盘下新建mongodb文件夹,建议在非系统盘下操作。然后在mongodb文件夹里面按照下面的结构建立相关目录和文件 –mongodb —-data ——db —-log ——mongodb.log –mongo.cfg 用编辑器打开mongo.cfg,写入下面两行 dbpath=D:\mongodb\data\db logpath=D:\mongodb\log\mongodb.log 已管理员的身份打开cmd,并进入mongodb的安装目录bin下 运行下面命令 mongod --config D:\mongodb\mongo.config --install --serviceName "MongoDB" --journal 在bin目录下运行下面命令 net start MongoDB mongodb可视化 安装robo 3t,下载链接:https://robomongo.org/download

November 2, 2017 · 1 min · 29 words · Norman Wang

利用浏览器抓包获取百度网盘真实下载链接

注:至发文日此方法一直可用。获取到的下载链接可以复制到任意下载软件下载,推荐用idm等国外下载软件,实测迅雷速度不怎么样。不管是多大的文件都可以获取到! 第一步 打开浏览器,我用chrome做的演示,登录百度云 第二步 按F12打开开发者模式,切换至network选项。选择你要下载的文件,点击下载。 第三步 在右侧找到一个已download开头的url,找不到可以直接搜索。点击previve,展开数据,dlink:””,引号里面就是下载链接 第四步 复制链接到迅雷可以下载

October 21, 2017 · 1 min · 9 words · Norman Wang

网易云音乐的简单抓包过程,获取音乐的真实下载地址

闲来无事,经常听用网易云听歌,然后就想抓一下真实下载地址。我是用chrome浏览器开发者模式抓包的。 用chrome浏览器打开网易云音乐首页http://music.163.com 按f12打开开发者模式,并切换至network 点击手机按钮,并刷新网页,网站就会从pc版变成web版 点击搜索,输入你想下载的歌曲并回车确定 在右边会出现一个url为get的网络请求(一开始我以为是请求,点开才发现是post) 点开preview里面就有搜索结果的详细数据,json格式(web版是上拉加载每次加载20个数据,每次加载一次都会有一次url为get的网络请求) 点击你想下载的歌曲,让它正常播放然后会出现一个名为url的网络请求 点开preview里面就有搜索结果的详细数据,里面就有真实的url下载地址

October 5, 2017 · 1 min · 9 words · Norman Wang

哔哩哔哩分类数据api接口分享jsonp/json

最近正在做一个仿bilibili app的前端项目,用的是h5+,需要数据。所以就试着抓了一下bilibili的api,结果还真抓到了。现在分享出来给有用的人。 json: https://api.bilibili.com/archive_rank/getarchiverankbypartion?callback=jQuery17208614768484119808_1506153543997&type=jsonp&tid=95&pn=1&_=1506153545368 jsonp: https://api.bilibili.com/archive_rank/getarchiverankbypartion?jsonp=jsonp&tid=124&pn=1 tid=分类 95:数码 98:机械 122:技术 pn=1页数 具体所有分类tid请看下面,f12开发者模式

October 4, 2017 · 1 min · 12 words · Norman Wang

[转]前端资源汇总(框架/效果库/插件/网站/工具/素材等)

JavaScript 框架/库 velocity:很全面的JavaScript动画库 vivus:可以动态描绘 SVG 的 JS 库, 支持多种动画 Web Animation:Javascript 实现的 Web Animation API scrollReveal.js:使元素以非常酷帅的方式进入画布 (Viewpoint) snabbt.js:一个利用 Javascript 和 CSS transform 的 animation 库 transit:jquery实现的css动画 matter-js:2D 物理效果引擎,碰撞、弹跳等 parallax:一个用于响应智能手机 orientation 的库 focusable:是页面上一个元素高亮的库,关灯效果 sensor.js:在智能移动设备浏览器上,通过HTML5的api使用移动设备的功能。定位、运动、倾斜等 animatable:仅仅依靠 border-width 和 background-position 实现的各种动态效果 Bounce.js:漂亮的css3动画库 GreenSock:基于svg,很强大的动画效果,High-performance HTML5 animations that work in all major browsers. dynamics.js:弹性物理效果 slick:功能异常强大的一个图片滑动切换效果库 swipe:非常轻量级的一个图片滑动切换效果库, 性能良好, 尤其是对手机的支持, 压缩后的大小约 5kb swiper:用于实现浏览器上的滑动切换效果,支持硬件加速 Owl:多种图片轮播效果,多选项的 flickity:轮播图效果,左右有显示一半的图片 icheck:一款漂亮的 Checkbox 插件 iscroll:高性能的滚动(scroll)处理库,功能强大,支持各种事件,不依赖任何的库,且插件丰富, 大众点评的手机端列表滚动就是用这个库处理的 Slideout.js:一个非常美观的侧滑菜单 sweetalert:一个非常美观的用于替换浏览器默认 alert 的库 Sortable:现代浏览器上用于实现元素拖拽排序的功能,支持 Meteor, AngularJS, React,不依赖 jQuery echarts:百度图表 metrics-graphics:基于 D3 的图表库,简洁、高效,Mozilla 出品 c3:基于 D3 的图表库 Summernote:WYSIWYG 富文本编辑器 awesomplete:非常轻型的一个自动补全 JS 库, 没有任何依赖, 配置简单, 美观。 basket.js:基于 LocalStorage 的资源加载器,可以用来缓存 script 和 css, 手机端使用速度快于浏览器直接缓存 mobile-angular-ui:基于angularjs和bootstarp的web app开发框架 moment.js:轻量级的Javascript日期处理类库 Datatables:jquery表格插件,它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 artDialog:经典的网页对话框组件 sliphover:不同方向的hover动画 js插件 jQuery全屏滚动插件fullPage.js演示 另一款实现一步滚动的开源库,使用人数众多,可实现各种狂拽酷炫掉渣天的前端效果 jQuery 的一个插件, 用于实现大背景(视频、图片)效果 页面上内嵌图片的放大缩小效果,类似于 Medium 中的效果 jQuery 倒计时插件 Spectrum:Js实现的颜色选择器 (Colorpicker) 简洁美观的进度条,扁平化 功能强大的图片延迟加载工具,可以首先加载一个低质量的图片,然后再加载高质量的图片 jQuery 的一个插件,可以用来实现瀑布流的效果 jQuery 插件,用来生成二维码 一个可以检测设备类型的工具,可以让我们根据不同的设备来为其定制响应的 Javascript 和 CSS 滚动加载,滚动到最下到自动加载, Paul Irish 大神之作 单页应用中一个用于处理导航栏的库 多种轮播图上下切换按钮效果 jQuery 插件,用于绑定热键 css 框架/库 normalize.css:一个用于重置浏览器内置样式的库 type.css:中文网页重设与排版:一致化浏览器排版效果,构建最适合中文阅读的网页排版 网易nec:更好的css样式解决方案 Pure:雅虎出品样式框架,恩,可以阅读参考 Flat UI:Bootstrap 的一款主题,简洁美观 foundation:另一款前端模版框架,类似于 Bootstrap Animate.css:css动画效果 movejs:基于 CSS3 的前端动画框架 Hover.css:基于 CSS3 的各种 鼠标悬停(hover)特效 css3 generator:css3新特新介绍 three.js:3D动画效果库 singlediv:仅用一个div就画出图标 icono:一款用纯 CSS3 实现的图标库 css3lib:CSS3 UI 库,腾讯团队出品,多种css3特效库 最强9种css3圆形按钮hover鼠标经过动画效果 多种按钮悬停效果 load-awesome:很棒的一套loading效果 网站 caniuse:查看html5和css3浏览器的支持情况 html5test:测试浏览器对html5的支持情况 css3test:测试浏览器对css3的支持情况 libscore:统计网站和js使用排行 开源中国在线工具 在线工具,做最专业的工具网站 阿里测:网站性能测试分析 PageSpeed:谷歌家的网页性能工具 iTest:iTest爱测试前端测试服务,多浏览器测试 微信调试工具 百度字体编辑器 Awwwards:一家筛选评比互联网上最佳网站设计开发的网站 alloyteam:腾讯全端 AlloyTeam 团队 Blog awesome:awesome 汇总,github上超全面资源集合 awesome-resources 免费的编程中文书籍索引:Github上面的免费的计算机编程类中文书籍 谷歌的前端性能优化文章列表 Placeholders.js:为不支持的 HTML5 的浏览器提供 Placeholder 支持 相片或作品展示的一个模板,简单好看 免费的html5响应式模板 html5简洁的模板 bootstrap响应式模板,有好多款 黑白简洁的响应式模板

September 28, 2017 · 1 min · 196 words · Norman Wang

MUI - datepicker(时间选择器)

html <button class="mui-btn" onclick="showdate()">显示日期</button> <button class="mui-btn" onclick="showtime()">显示时间</button> js function showdate(){ var dDate = new Date(); dDate.setFullYear(2017,8,22); var minDate = new Date(); minDate.setFullYear(1990,0,1); var maxDate = new Date(); maxDate.setFullYear(2050,11,31); plus.nativeUI.pickDate( function(e){ var d = e.date; mui.toast('你选择的时间是:' + d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate()); }, function(e){ mui.toast('没有选择'); }, { title : '请选择日期', date : dDate, minDate : minDate, maxDate : maxDate }); } function showtime(){ var myDate = new Date(); var hou = myDate.getHours(); var minu = myDate.getMinutes(); var dTime = new Date(); dTime.setHours(hou,minu); plus.nativeUI.pickTime( function(e){ var d = e.date; mui.toast('您选择的时间是:'+d.getHours()+':'+d.getMinutes()); }, function(e){ mui.toast('没有选择') }, { title : '请选择时间', is24Hour : 'true', time : dTime } ); } 注意 plus.nativeUI.pickTime/pickDate(函数1,函数2,对象) 函数1:成功(选择)后返回的结果 函数2:失败(没有选择)后返回的结果 对象:弹出的ui界面具体配置项

September 25, 2017 · 1 min · 114 words · Norman Wang

博客绑定域名成功

成功绑定域名wangyu.link,以后可以直接访问wangyu.link 购买一个域名 在你的博客项目文件夹source下面创建一个名字为 CHAME 的文件,没有后缀名都是大写。 打开这个文件,在里面写入你的域名,不带http://和www,也不要有任何所见换行空格。 hexo g hexo d 进入你的域名解析界面 添加两个记录类型为CNAME的记录,主机记录分别是www和@,记录值都是 你的github用户名.github.io 等待解析生效就好了。

September 23, 2017 · 1 min · 14 words · Norman Wang

WDCP安装 备份/恢复网站 配置SSL加密协议 经验分享

我原来服务器用的是WDCP 2.x版本,遇到一个很棘手的问题,一直解决不了。然后我就准备有时间重装一下WDCP,正好WDCP更新到了3.2 支持免费SSL,居然是一键创建。没有比这更简单的事情了!虽然我原来用的是阿里云的免费SSL证书,但是配置起来还是没一键配置来的快啊! 重装服务器 我原来用的是centos 6.5 64bit ,现在重装成 7.2 64bit。在阿里云ecs实例点击–更多–更换系统盘(必须先停止服务器才可以点击)然后选择系统就OK了。 安装WDCP 3.2 源码安装(ssh登录服务器,执行如下操作即可,需root用户身份安装) wget http://dl.wdlinux.cn/lanmp_laster.tar.gz tar zxvf lanmp_laster.tar.gz sh lanmp.sh 注意:服务器系统一定要纯净的,会提示装的具体环境服务,按自己的需求安装,不知道的话选all 安装完后,默认的后台管理地址如下 http://ip:8080 用户名:admin 默认密码:wdlinux.cn mysql默认的管理用户名:root 默认密码:wdlinux.cn 如果有其他问题请上wdcp论坛:http://www.wdlinux.cn/bbs/index.php 备份/恢复 网站和数据库 备份 先说说备份吧,在备份数据库时候强烈推荐在wdcp后台备份一遍,然后在phpmyadmin后台也备份一遍。因为我在恢复数据库时候出现了用在wdcp后台gz格式备份文件恢复失败的情况。然后用在phpmyadmin后台备份的sql文件恢复成功。 wdcp后台备份数据库 点击 mysql管理–数据库列表 选项,然后在相应数据库哪项点击备份 phpmyadmin后台备份数据库 点击 mysql管理–phpmyadmin ,然后输入相应的数据库用户名密码登录 点击自定义–选择 添加 DROP TABLE 确保导出sql格式,点击执行 备份网站文件 在网站列表选项,点击相应网站哪一项的备份选项。备份文件在/www/backup/ 恢复 网站文件恢复 事先建立好网站,然后把上一步备份的网站文件解压到具体目录。(很简单,不具体说了) 数据库恢复 建立空数据库,然后在phpmyadmin界面点击导入sql文件即可。如果失败可以在wdcp面板试试。(也可以试试gz格式的数据文件,本人导入失败) 导入后如果出现数据库连接失败,可以尝试一下方法: 重启服务器,重启web服务 确定网站文件里面的数据库配置文件里面的数据库信息(数据库名 数据库用户名 密码)与现在恢复的数据库保存一样。 如果是wordpress,可以在phpmyadmin面板找到wp-options表 修复它。 如果是wordpress,在网站根目录找到wp-config.php文件,在里面加上下面这句:define(‘WP_ALLOW_REPAIR’, true); 配置SSL 一键配置,简单的一逼! 在你要配置的网站哪项,点击 C 。有时候会没反应,刷新一下,知道出现创建成功! 注意: 1.这个创建要连接海外服务器,时间稍微会久一点,不同的线路带宽也会不一样 2.letsencrypt证书有效期为3个月,快到三个月时,再在后台点击创建一次就可以 3.确保服务器开放443端口,系统设置里面开通443,防火墙放行443

September 19, 2017 · 1 min · 70 words · Norman Wang

[转]常见的三大加密算法介绍

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。 加密建立在对信息进行数学编码和解码的基础上。加密类型分为两种,对称加密与非对称加密,对称加密双方采用共同密钥,(当然这个密钥是需要对外保密的),这里讲一下非对称加密,这种加密方式存在两个密钥,密钥– 一种是公共密钥(正如其名,这是一个可以公开的密钥值),一种是私人密钥(对外保密)。 您发送信息给我们时,使用公共密钥加密信息。 一旦我们收到您的加密信息,我们则使用私人密钥破译信息密码(被我们的公钥加密的信息,只有我们的唯一的私钥可以解密,这样,就在技术上保证了这封信只有我们才能解读——因为别人没有我们的私钥)。 使用私人密钥加密的信息只能使用公共密钥解密(这一功能应用与数字签名领域,我的私钥加密的数据,只有我的公钥可以解读,具体内容参考数字签名的信息)反之亦然,以确保您的信息安全。 MD5 MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。 MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。 MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。 MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。在一些初始化处理后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。 首先填充消息使其长度恰好为一个比512位的倍数仅小64位的数。填充方法是附一个1在消息后面,后接所要求的多个0,然后在其后附上64位的消息长度(填充前)。这两步的作用是使消息长度恰好是512位的整数倍(算法的其余部分要求如此),同时确保不同的消息在填充后不相同。 四个32位变量初始化为: A=0x01234567 B=0x89abcdef C=0xfedcba98 D=0x76543210 它们称为链接变量(chainingvariable) 接着进行算法的主循环,循环的次数是消息中512位消息分组的数目。 将上面四个变量复制到别外的变量中:A到a,B到b,C到c,D到d。 主循环有四轮(MD4只有三轮),每轮很相拟。第一轮进行16次操作。每次操作对a,b,c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a,b,c或d中之一。最后用该结果取代a,b,c或d中之一。 以一下是每次操作中用到的四个非线性函数(每轮一个)。 F(X,Y,Z)=(X&Y)|((~X)&Z) G(X,Y,Z)=(X&Z)|(Y&(~Z)) H(X,Y,Z)=X^Y^Z I(X,Y,Z)=Y^(X|(~Z)) (&是与,|是或,~是非,^是异或) 这些函数是这样设计的:如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。 函数F是按逐位方式操作:如果X,那么Y,否则Z。函数H是逐位奇偶操作符。 设Mj表示消息的第j个子分组(从0到15),«<s表示循环左移s位,则四种操作为: FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+Mj+ti)«<s) GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,c,d)+Mj+ti)«<s) HH(a,b,c,d,Mj,s,ti)表示a=b+((a+(H(b,c,d)+Mj+ti)«<s) II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)«<s) 这四轮(64步)是: 第一轮 FF(a,b,c,d,M0,7,0xd76aa478) FF(d,a,b,c,M1,12,0xe8c7b756) FF(c,d,a,b,M2,17,0x242070db) FF(b,c,d,a,M3,22,0xc1bdceee) FF(a,b,c,d,M4,7,0xf57c0faf) FF(d,a,b,c,M5,12,0x4787c62a) FF(c,d,a,b,M6,17,0xa8304613) FF(b,c,d,a,M7,22,0xfd469501) FF(a,b,c,d,M8,7,0x698098d8) FF(d,a,b,c,M9,12,0x8b44f7af) FF(c,d,a,b,M10,17,0xffff5bb1) FF(b,c,d,a,M11,22,0x895cd7be) FF(a,b,c,d,M12,7,0x6b901122) FF(d,a,b,c,M13,12,0xfd987193) FF(c,d,a,b,M14,17,0xa679438e) FF(b,c,d,a,M15,22,0x49b40821) 第二轮 GG(a,b,c,d,M1,5,0xf61e2562) GG(d,a,b,c,M6,9,0xc040b340) GG(c,d,a,b,M11,14,0x265e5a51) GG(b,c,d,a,M0,20,0xe9b6c7aa) GG(a,b,c,d,M5,5,0xd62f105d) GG(d,a,b,c,M10,9,0x02441453) GG(c,d,a,b,M15,14,0xd8a1e681) GG(b,c,d,a,M4,20,0xe7d3fbc8) GG(a,b,c,d,M9,5,0x21e1cde6) GG(d,a,b,c,M14,9,0xc33707d6) GG(c,d,a,b,M3,14,0xf4d50d87) GG(b,c,d,a,M8,20,0x455a14ed) GG(a,b,c,d,M13,5,0xa9e3e905) GG(d,a,b,c,M2,9,0xfcefa3f8) GG(c,d,a,b,M7,14,0x676f02d9) GG(b,c,d,a,M12,20,0x8d2a4c8a) 第三轮 HH(a,b,c,d,M5,4,0xfffa3942) HH(d,a,b,c,M8,11,0x8771f681) HH(c,d,a,b,M11,16,0x6d9d6122) HH(b,c,d,a,M14,23,0xfde5380c) HH(a,b,c,d,M1,4,0xa4beea44) HH(d,a,b,c,M4,11,0x4bdecfa9) HH(c,d,a,b,M7,16,0xf6bb4b60) HH(b,c,d,a,M10,23,0xbebfbc70) HH(a,b,c,d,M13,4,0x289b7ec6) HH(d,a,b,c,M0,11,0xeaa127fa) HH(c,d,a,b,M3,16,0xd4ef3085) HH(b,c,d,a,M6,23,0x04881d05) HH(a,b,c,d,M9,4,0xd9d4d039) HH(d,a,b,c,M12,11,0xe6db99e5) HH(c,d,a,b,M15,16,0x1fa27cf8) HH(b,c,d,a,M2,23,0xc4ac5665) 第四轮 II(a,b,c,d,M0,6,0xf4292244) II(d,a,b,c,M7,10,0x432aff97) II(c,d,a,b,M14,15,0xab9423a7) II(b,c,d,a,M5,21,0xfc93a039) II(a,b,c,d,M12,6,0x655b59c3) II(d,a,b,c,M3,10,0x8f0ccc92) II(c,d,a,b,M10,15,0xffeff47d) II(b,c,d,a,M1,21,0x85845dd1) II(a,b,c,d,M8,6,0x6fa87e4f) II(d,a,b,c,M15,10,0xfe2ce6e0) II(c,d,a,b,M6,15,0xa3014314) II(b,c,d,a,M13,21,0x4e0811a1) II(a,b,c,d,M4,6,0xf7537e82) II(d,a,b,c,M11,10,0xbd3af235) II(c,d,a,b,M2,15,0x2ad7d2bb) II(b,c,d,a,M9,21,0xeb86d391) 常数ti可以如下选择: 在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。 (2的32次方) 所有这些完成之后,将A,B,C,D分别加上a,b,c,d。然后用下一分组数据继续运行算法,最后的输出是A,B,C和D的级联。 MD5的安全性</s) </s) </s) </s) </s表示循环左移s位,则四种操作为: MD5相对MD4所作的改进: 1.增加了第四轮. 2.每一步均有唯一的加法常数. 3.为减弱第二轮中函数G的对称性从(X&Y)|(X&Z)|(Y&Z)变为(X&Z)|(Y&(~Z)) 4.第一步加上了上一步的结果,这将引起更快的雪崩效应. 5.改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似. 6.近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应.各轮的位移量互不相同. 2.加密算法之DES算法 ...

September 17, 2017 · 2 min · 296 words · Norman Wang