好了, 让我们开始构建安全密码检查器的第一步｡
现在在这里, 我有一张支票, 我的护照档案｡
你也可以这样做｡
我的终端就在这里｡
我们首先要做的是导入requests模块｡
如果你还没有, 那么你可以安装请求模块｡
请求模块将允许我们提出请求｡
所以请记住, 这有点像有一个浏览器没有, 嗯, 实际的浏览器｡
我们可以手动请求一些东西, 就像我们有一个浏览器, 我们得到一些数据回来｡
因此, 我们可以通过密码API实际使用请求模块的方式是, 我们可以有密码API URL,
我将告诉您它是什么｡
是https｡
Colin斜杠斜杠API发布密码｡
网络公司｡
然后我们给予它一个范围斜线｡
这里是我们给予它密码的地方｡
所以我们可以做加法｡
我们就先这样吧｡
密码｡
一, 二, 三, 一, 二, 三
这就是我们要使用的URL｡
让我们把它弄小一点｡
在这里, 我们将通过执行请求来获得响应｡
小点声｡
我们把这个输入进去看看会发生什么｡
如果我保存并运行这个程序, 并且记住, 我们还没有能力输入密码, 所以我们就运行这个文件｡
好的, 我们得到了一些东西, 但看起来像是一个错误｡
那是因为我做了https｡
我真傻
但我想再次向你们展示｡
是的, 就在这里｡
我能够读取错误, 它看起来像是一个无效的架构｡
没有用于油井https的连接适配器｡
所以如果我们再运行一次｡
好吧, 我会的
看起来成功了｡
没有错误｡
但是让我们把它打印出来看看为什么我们会得到这么多的打印响应｡
我来运行这个｡
我们得到了400的回应｡
嗯嗯嗯
现在一个反应还是400不好｡
通常这意味着未经授权或API有问题｡
这些响应代码将在本课程的Web开发部分中介绍｡
但这只是意味着400不好｡
我们需要200的响应｡
200的意思是｡
好吧, 我会的
发生这种情况的原因是因为这不是API实际工作的方式｡
你看这里我们刚给了它一个密码｡
但是这个API的工作原理是它使用了一种叫做哈希的东西｡
这是什么意思？
在这节课之后, 我会给你们上一节额外的课, 这样你们就能学到更多关于哈希的知识了｡
但我这里有这个网站, 我要链接到, 让我们把它做得大一点｡
希望您能看到它是一个SHA1哈希生成器｡
现在散列一个密码｡
这是你应该经常做的事｡
假设您正在保存用户的密码｡
到数据库｡
您永远不应该将用户密码存储在我们所说的明文中｡
这就是密码｡
相反, 我们想做一些叫做哈希的事情｡
也就是说, 通过一个散列算法运行它, 使其成为乱码｡
当我在这里输入密码2､ 1､ 2､ 3时, 我单击“生成”, 然后向下滚动｡
这是散列密码｡
请注意, 当我更改此密码时, 它也会随之更改｡
但是这里的关键是, 我们会在视频中讨论的, 散列是一个单向函数｡
有很多不同的哈希算法, 有空的5, 有SHA 2､
5､ 6, 我们使用SHA 1, 因为这是API使用的算法, SHA 1本质上只是哈希｡
这是一个算法, 一个函数, 它可以输出密码的乱码｡
一, 二, 三, 一, 二, 三
但无论我们生成多少次密码1到3, 它总是相同的哈希值｡
这样, 我们就可以检查是否有人输入了密码,
如果我们已经有了密码的哈希版本, 比如说数据库, 我们就可以将密码的哈希版本与数据库进行比较｡
散列密码｡
再次强调, 不要在这里搞得太混乱｡
希望在那个额外的视频中, 我们会更多地讨论这个问题｡
但关键的是, 这个API, 因为我们希望尽可能安全,
所以我们不想通过网络发送我们的真实的密码｡
相反, 我们希望发送密码的散列版本｡
如果我把它复制到这里, 这就是我们应该发送给API的内容｡
但问题是｡
这仍然不是超级安全的, 因为任何人都可以输入密码, 然后继续猜,
继续猜, 最后找到密码1到3, 然后看到, 哦, 这个哈希值和这个哈希值完全一样｡
这样他们就会知道这是我们的密码｡
所以这个API使用了一种叫做K匿名的技术, 这实际上是一种现代技术, 像谷歌, Facebook, Netflix,
亚马逊这样的大公司都在使用｡
K匿名性允许某人接收关于我们的信息, 但仍然不知道我们是谁｡
这是如何运作的？
顺便说一句, 这实际上是一种经常使用的技术, 特别是现在, 在为公司使用个人数据的情况下,
它是不受欢迎的｡
因此, 理想情况下, 您不希望将给予的个人信息提供给公司｡
所以一些关心安全和隐私的公司利用这种匿名来跟踪你, 但仍然不知道你是谁｡
现在, 这样做｡
我们只给予哈希密码的前五个字符｡
一, 二, 三, 四, 五.
如果我删除它, 这个API将做的是它有一个所有已泄露密码的列表｡
但是, 所有这些密码都是使用SHA 1算法进行散列的｡
它会在所有密码的数据库中查找, 并挑选出前五个字符与之匹配的所有哈希密码｡
这样, 通过这个响应, 我们就可以得到所有的密码, 这些密码都是经过哈希处理的,
这样, 当我们收到这个响应时, 我们就可以检查哈希函数的其余部分｡
这样, 这个API永远不会知道我们的完整哈希, 因此永远也猜不到我们的密码｡
他们只会知道我们有一个哈希函数可以匹配任何数百个密码｡
这很酷吧？
所以如果我真的保存这个然后逃跑｡
我得到的回应是200｡
太棒了｡
好吧, 我会的
让我们休息一下, 了解更多关于哈希的知识, 我们在下一个视频中再见｡
再见, 再见, 再见