提交 f97a8985 编写于 作者: W wizardforcel

2020-06-22 12:37:40

上级 3719d6d4
......@@ -10,13 +10,13 @@ Python `bcrypt`模块是一个用于在 Python 中生成强哈希值的库。
加密是对消息或信息进行编码的过程,以使只有授权人员才能使用相应的键读取消息或信息,而未经授权的人员则不能。 预期的信息或消息,称为纯文本,使用加密算法-密码-加密,生成密文,只有解密后才能读取。 加密是一种双向功能。 当我们加密某些东西时,我们这样做是为了以后对其进行解密。 加密用于传输时保护数据; 例如在邮件通讯中。
## 散列
## 哈希
哈希是使用算法将任意大小的数据映射到固定长度的过程。 这称为哈希值。 加密是一种双向功能,而散列是一种单向功能。 尽管在技术上可以反向散列值,但所需的计算能力使其不可行。 加密是为了保护传输中的数据,而散列是为了验证数据没有被更改并且是真实的。
哈希是使用算法将任意大小的数据映射到固定长度的过程。 这称为哈希值。 加密是一种双向功能,而哈希是一种单向功能。 尽管在技术上可以反向哈希值,但所需的计算能力使其不可行。 加密是为了保护传输中的数据,而哈希是为了验证数据没有被更改并且是真实的。
> **注意**:散列不限于安全性。 它还用于比较大量数据或快速键查找。
> **注意**:哈希不限于安全性。 它还用于比较大量数据或快速键查找。
密码不是以纯文本格式存储在数据库中,而是以散列值存储。
密码不是以纯文本格式存储在数据库中,而是以哈希值存储。
## 盐
......@@ -26,7 +26,7 @@ Python `bcrypt`模块是一个用于在 Python 中生成强哈希值的库。
`bcrypt`是 Niels Provos 和 DavidMazières 基于 Blowfish 密码设计的密码哈希功能。 `bcrypt`函数是 OpenBSD 的默认密码哈希算法。 有针对 C,C++ ,C# ,Java,JavaScript,PHP,Python 和其他语言的`bcrypt`实现。
`bcrypt`算法使用强大的加密技术为我们创建哈希并加盐。 该算法的计算成本是参数化的,因此随着计算机变得越来越快,它可能会增加。 计算成本被称为工作因子或成本因子。 它减慢了散列的速度,使暴力破解的尝试越来越难。 随着计算机变得越来越快,最佳成本因数会随着时间而变化。 高成本因素的缺点是增加了系统资源的负载并影响了用户体验。
`bcrypt`算法使用强大的加密技术为我们创建哈希并加盐。 该算法的计算成本是参数化的,因此随着计算机变得越来越快,它可能会增加。 计算成本被称为工作因子或成本因子。 它减慢了哈希的速度,使暴力破解的尝试越来越难。 随着计算机变得越来越快,最佳成本因数会随着时间而变化。 高成本因素的缺点是增加了系统资源的负载并影响了用户体验。
## Python `bcrypt`创建哈希密码
......@@ -119,7 +119,7 @@ match
## Python `bcrypt`成本因子
成本因子通过减慢散列来提高安全性。
成本因子通过减慢哈希来提高安全性。
`cost_factor.py`
......
......@@ -8,19 +8,19 @@ Python 哈希教程解释了 Python 中的哈希概念。 我们介绍了哈希
哈希表用于以许多常见的编程语言(例如 C++ ,Java 和 Python)实现映射和设置数据结构。 Python 将哈希表用于字典和集合。 哈希表是键值对的无序集合,其中每个键都是唯一的。 哈希表提供了有效的查找,插入和删除操作的组合。 这些是数组和链接列表的最佳属性。
## 散列
## 哈希
哈希是使用算法将任意大小的数据映射到固定长度的过程。 这称为哈希值。 散列用于创建高性能,直接访问的数据结构,在该结构中要快速存储和访问大量数据。 哈希值使用哈希函数计算。
哈希是使用算法将任意大小的数据映射到固定长度的过程。 这称为哈希值。 哈希用于创建高性能,直接访问的数据结构,在该结构中要快速存储和访问大量数据。 哈希值使用哈希函数计算。
## Python 可哈希对象
如果对象的哈希值在其生命周期内从未发生变化,则该对象是可哈希的。 (在多次调用 Python 程序期间,它可以具有不同的值。)可哈希对象需要`__hash__()`方法。 为了执行比较,散列需要一种`__eq__()`方法。
如果对象的哈希值在其生命周期内从未发生变化,则该对象是可哈希的。 (在多次调用 Python 程序期间,它可以具有不同的值。)可哈希对象需要`__hash__()`方法。 为了执行比较,哈希需要一种`__eq__()`方法。
> **注意**:比较相等的可哈希对象必须具有相同的哈希值。
散列性使对象可用作字典键和集成员,因为这些数据结构在内部使用散列值。 Python 不可变的内置对象是可哈希的; 可变容器(例如列表或字典)不是。 默认情况下,作为用户定义类实例的对象是可哈希的。 它们都比较不相等(除了它们本身),并且它们的哈希值是从`id()`派生的。
哈希性使对象可用作字典键和集成员,因为这些数据结构在内部使用哈希值。 Python 不可变的内置对象是可哈希的; 可变容器(例如列表或字典)不是。 默认情况下,作为用户定义类实例的对象是可哈希的。 它们都比较不相等(除了它们本身),并且它们的哈希值是从`id()`派生的。
> **注意**:如果一个类没有定义一个`__eq __()`方法,它也不应该定义一个`__hash __()`操作。 如果它定义了`__eq __()`而不是`__hash __()`,则其实例将不能用作可散列集合中的项目。
> **注意**:如果一个类没有定义一个`__eq __()`方法,它也不应该定义一个`__hash __()`操作。 如果它定义了`__eq __()`而不是`__hash __()`,则其实例将不能用作可哈希集合中的项目。
## Python `hash()`函数
......
......@@ -18,7 +18,7 @@
* [表达式](expressions/)
* [控制流](flowcontrol/)
* [数组](arrays/)
* [散列](hashes/)
* [哈希](hashes/)
* [OOP](oop/)
* [OOP II](oop2/)
* [正则表达式](regex/)
......
......@@ -12,10 +12,10 @@ Ruby 有几种数据类型。 所有数据类型均基于类。 以下是 Ruby
* 布尔值
* 符号
* 号码
* 弦乐
* 数字
* 字符串
* 数组
* 散列
* 哈希
在以下示例中,我们具有所有重要的 Ruby 数据类型。
......
......@@ -55,7 +55,7 @@ $ ./create.rb
```
从输出中,我们可以看到名称哈希的字面表示。 散列以大括号为界。 键和值与`=>`字符配对。
从输出中,我们可以看到名称哈希的字面表示。 哈希以大括号为界。 键和值与`=>`字符配对。
`store`方法可用于使用某些值初始化哈希。 可以使用它代替方括号。
......@@ -292,7 +292,7 @@ true
这是示例的输出。
在本节的最后一个示例中,我们将从散列中读取值。
在本节的最后一个示例中,我们将从哈希中读取值。
```ruby
#!/usr/bin/ruby
......@@ -415,7 +415,7 @@ Key: 4, Value: amethyst
## Ruby 删除哈希中的对
在以下示例中,我们将关注从散列中删除对的方法。 这包括删除单个对的方法以及可以一步删除多个键值的方法。
在以下示例中,我们将关注从哈希中删除对的方法。 这包括删除单个对的方法以及可以一步删除多个键值的方法。
```ruby
#!/usr/bin/ruby
......
......@@ -12,10 +12,10 @@ HTTP 标头允许客户端和服务器将附加信息与请求或响应一起传
标头有几种类型:
* 常规标头-适用于请求和响应,但与最终在正文中传输的数据无关。
* 请求标头-包含有关要获取的资源或客户端本身的更多信息。
* 响应标头-包含有关响应的其他信息,例如响应的位置或服务器本身(名称和版本等)。
* 实体标头-包含有关实体主体的更多信息,例如其内容长度或 MIME 类型。
* 常规标头 - 适用于请求和响应,但与最终在正文中传输的数据无关。
* 请求标头 - 包含有关要获取的资源或客户端本身的更多信息。
* 响应标头 - 包含有关响应的其他信息,例如响应的位置或服务器本身(名称和版本等)。
* 实体标头 - 包含有关实体主体的更多信息,例如其内容长度或 MIME 类型。
## 使用 Java Servlet 显示标头字段
......
......@@ -12,9 +12,9 @@ Servlet 是 Java 类,可响应特定类型的网络请求-最常见的是 HTTP
POST 请求有三种编码 HTML 表单方法:
* 应用/ x-www-form-urlencoded
* 多部分/表单数据
* 文字/纯文字
* `application/x-www-form-urlencoded`
* `multipart/form-data`
* `text/plain`
`application/x-www-form-urlencoded`是默认编码。 这些值编码在由`&`分隔的键值元组中。 `=`字符用于键和值之间。 非字母数字字符采用百分比编码。 此编码类型不适用于二进制文件。
......
......@@ -14,11 +14,11 @@ JSTL `<c:foreach>`标签是基本的迭代标签。 它遍历各种 Java 集合
`<c:foreach>`标记包含以下属性:
* `items`-要迭代的项目集合
* `begin`-起始项目的索引
* `end`-结束项目的索引
* `step`-迭代步骤
* `var`-迭代中当前项目的变量
* `items` - 要迭代的项目集合
* `begin` - 起始项目的索引
* `end` - 结束项目的索引
* `step` - 迭代步骤
* `var` - 迭代中当前项目的变量
## `forEach` taglib 声明
......
......@@ -14,8 +14,8 @@ Spring Data JPA 是伞式 Spring Data 项目的一部分,该项目使实现基
在 Spring Data JPA 中,查询结果可以通过两种方式排序:
* 在 JPQL 查询中使用 ORDER BY 子句
* 将类型为 Sort 的参数添加到查询方法
* 在 JPQL 查询中使用`ORDER BY`子句
* 将类型为`Sort`的参数添加到查询方法
## Spring Boot Data JPA 排序示例
......
......@@ -451,6 +451,6 @@ City{id=7, name=Brest, population=139163}, City{id=12, name=Bucharest, populatio
* [Spring Boot Data JPA `@NamedQuery`教程](/springboot/datajpanamedquery/)
* [Spring Boot Data JPA 派生查询教程](/springboot/datajpaderivedqueries/)
* [Spring Boot Data JPA 排序教程](/springboot/datajpasort/)
* [](/springboot/datajpasort/)[Spring Boot `CrudRepository`教程](/springboot/crudrepository/)
* [Spring Boot `CrudRepository`教程](/springboot/crudrepository/)
列出[所有 Spring Boot 教程](/all/#springboot)
\ No newline at end of file
......@@ -189,5 +189,5 @@ $ mvn spring-boot:run
在本教程中,我们展示了如何使用 Spring `ViewControllerRegistry`创建简单的路线。
* [Spring Boot PostgreSQL 教程](/springboot/postgresql/)
* [Spring Boot @Bean](/articles/springbootbean/)
* [Spring Boot `@Bean`](/articles/springbootbean/)
* [Spring Boot `@Qualifier`注解](/articles/springbootqualifier/)
\ No newline at end of file
......@@ -8,10 +8,10 @@ Spring 是流行的 Java 应用框架。 Spring Boot 致力于以最小的努力
Spring Boot 自动添加位于以下任何目录中的静态 Web 资源:
* / META-INF /资源/
* /资源/
* /静态的/
* /上市/
* `/META-INF/resources/`
* `/resources/`
* `/static/`
* `/public/`
目录位于类路径或`ServletContext`的根目录中。
......
......@@ -10,9 +10,9 @@ Spring 是流行的 Java 应用框架,而 Spring Boot 是 Spring 的演进,
POST 请求有三种编码 HTML 表单类型:
* 应用/ x-www-form-urlencoded
* 多部分/表单数据
* 文字/纯文字
* `application/x-www-form-urlencoded`
* `multipart/form-data`
* `text/plain`
`application/x-www-form-urlencoded`是默认编码,其中值编码在由`&`分隔的键值元组中。 `=`字符用于键和值之间。 非字母数字字符采用百分比编码。 此编码类型不适用于二进制文件。
......
......@@ -372,7 +372,7 @@ dump($response->toArray());
## HTTP 基本认证
HTTP 基本认证是一种简单的质询和响应机制,其中服务器从客户端请求凭据。 客户端在授权标头中将凭据传递给服务器。 认证信息不以任何方式加密或散列。 它使用 Base64 算法编码。 因此,仅将 HTTP 基本认证与`HTTPS`一起使用才被认为是安全的。
HTTP 基本认证是一种简单的质询和响应机制,其中服务器从客户端请求凭据。 客户端在授权标头中将凭据传递给服务器。 认证信息不以任何方式加密或哈希。 它使用 Base64 算法编码。 因此,仅将 HTTP 基本认证与`HTTPS`一起使用才被认为是安全的。
HTTP 基本认证使用 HTTP 标头中的标准字段,从而无需握手。
......
......@@ -61,11 +61,11 @@ $ composer dump-autoload -o
在应用中,我们将有五个命令:
* TimeCommand-显示当前日期和时间
* MessageCommand-显示来自用户输入的消息
* ColorCommand-以彩色显示消息
* BooksCommand-在表格中显示书籍列表
* AskNameCommand-交互式询问用户名
* `TimeCommand` - 显示当前日期和时间
* `MessageCommand` - 显示来自用户输入的消息
* `ColorCommand` - 以彩色显示消息
* `BooksCommand` - 在表格中显示书籍列表
* `AskNameCommand` - 交互式询问用户名
这些命令在`src/Command`目录中创建。 社区必须扩展`Symfony\Component\Console\Command`并实现其`configure()``execute()`方法。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册