Alice

Diffie-Hellman密钥协商算法

强颜欢笑 提交于 2020-08-12 10:01:18
概述 DH算法是非对称加密算法的鼻祖,为非对称加密算法奠定了基础, 主要用途是进行密钥交换 , 确保共享的密钥能够安全穿越不安全的网络 。该算法其背后有对应数学理论做支撑,简单来讲就是构造一个复杂的计算难题,使得对该问题的求解在现实的时间内无法快速有效的求解( computationally infeasible )。 这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个对称密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。之所以如此,主要还是由于对称加密和非对称加密算法的特性决定的。 1. 对称加密算法和非对称加密算法 对称加密算法 双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。 优点: 速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。 缺点: 在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。 在对称加密算法中常用的算法有: DES、AES等。 AES: 密钥的长度可以为128、192和256位

如何使用Linux系统创建、删除用户,删除、创建组,以及对组成员进行管理

て烟熏妆下的殇ゞ 提交于 2020-08-12 04:13:35
用户管理分为两大部分,一是对用户/组的基本概念进行了解,使用命令查看用户的基本信息文件,用户的密码信息文件以及组信息文件。二是对用户和组进行管理,创建、删除用户和组,对组的成员进行管理。 一、用户/组基本概念 1、查看当前登录用户的信息 ①当在root账户下 可以查询所有存在的用户信息 命令:id 用户名 ②在普通账户下只能查找当前用户的信息 命令:id 用户名 2、创建一个新用户以及给新用户设置密码 命令: useradd 新用户名 (创建一个新用户) 命令:passwd 新用户名(设置密码) ps: 一定要在passwd后面加入新建的用户名,不然更改的就是root的密码啦~~ 3、用户组信息存储的文件 ① 用户基本信息文件 命令:cat /etc/passwd (查看所有用户的信息文件) 命令:tail /etc/passwd (查看最后10个用户的信息文件) ps:因为用户文件太多,新创的用户在最下面所以要查看新创的用户就直接看最后就可以了。 相信大家看到显示出的东西都很懵,下面来解释一下这一部分的含义。 /etc/passwd(冒号分割为7列字段) eg:root:x:0:0:root:/root:/bin/bash 用户名:x:uid:gid:描述:HOME:shell root:用户名:登录系统的名字 X:密码占位符:,具体内容不在这里 0:UID: 用户的身份证号 0

Redis 6.0 客户端缓存的服务器端实现

我是研究僧i 提交于 2020-08-11 10:44:40
原文: https://redis.io/topics/client-side-caching 翻译:Wen Hui 转载:中间件小哥 客户端缓存是用于提供高性能服务的一项技术。它使用应用服务器节点(通常情况下和数据库服务器使用不同的物理机)的可用内存,用来在应用端直接存储一部分数据库信息。 正常情况下当客户端请求应用服务器一些数据时,应用服务器会请求数据库这些信息,如下图所示: 当使用客户端缓存时,应用服务器端会存储经常访问的数据请求,以便在下次客户端请求过程中重用之前的数据库查询回复,而无需再向数据库进行查询。 尽管用于本地缓存的应用程序内存可能不是很大,但是与请求诸如数据库之类的网络服务相比,访问本地计算机内存所需的时间要小几个数量级。由于在通常情况下,少量比例数据会经常频繁的被访问,因此该模式可以极大地减少应用程序获取数据的延迟,并同时减少数据库端的负载。 此外,在许多数据集中,信息很少进行更改。例如,社交网络中的大多数用户帖子要么是不变的,要么很少被用户编辑。再加上通常只有一小部分帖子非常受欢迎的事实,要么是因为一小群用户拥有大量关注者,或者因为最近的帖子具有更高的曝光度,由此可见为什么这种模式在实际情况下会非常有用。 通常来说,客户端缓存的两个主要优点是: 可用的数据延迟非常短。 数据库系统接收的查询较少,从而可以使用更少的节点来提供相同的数据服务。

[Codeforces 1236E]Alice and the Unfair Game

痞子三分冷 提交于 2020-08-10 15:37:48
Description 题库链接 有 \(n\) 个盒子和 \(m\) 次操作,第 \(i\) 次操作 Alice 会询问第 \(a_i\) 个盒子里是否有小球。为了避免 Alice 获得胜利,Marisa 会在每一次操作之前可以将藏着小球的盒子移到相邻的盒子,在 \(m\) 次询问后也可以进行移动。 记 \((x,y)\) 表示一开始 Marisa 将小球放在 \(x\) 号盒子,最终小球在 \(y\) 号盒子的一次游戏。询问所有使得 Marisa 获得胜利的 \((x,y)\) 的有序对个数。 \(1 \leq n,m \leq 10^5\) Solution 可以证明对于一个起点,其最终能到达的终点一定是一个连续的区间。那么我们只需要对于每一个起点,找到其最终的左右端点即可。 以右端点为例,需要找到最右的点的话就需要他要尽可能向右移动。但是如果向右移动会在下一轮受到阻碍的话,他就应该在原地停留一回合。停留一回合之后,他之后的走法完全和他左边这一个格子向下走一样。因此只需要求出左边这个格子能到达的最右是多少就行。 记 \(R_i\) 表示第 \(i\) 个位置为起点,一直向右走,碰到的石子个数。显然最右端点为 \(i+m+1-R_i\) 。 考虑如何计算这个 \(R\) 。我们逆着做,这样初值均为 0。当第 \(a_i\) 个盒子有阻碍时,也就是从第 \(a_i-i\)

【机器学习】隐马尔可夫模型(HMM)

大兔子大兔子 提交于 2020-08-09 22:25:56
隐马尔可夫模型(HMM) 1.部分参考内容 2.引言 3.隐马尔可夫模型 3.1 马尔可夫过程 3.2 隐马尔可夫模型 3.3 HMM模型的五元组 4.评估问题 4.1 直接方法 4.2前向算法 4.3后向算法 4.4前向后向算法 5.解码问题 6.学习问题 1.部分参考内容 Youtube (无中文字幕) 隐马尔可夫模型(HMM)详解 一次性弄懂马尔可夫模型、隐马尔可夫模型、马尔可夫网络和条件随机场 2.引言 Alice和Bob住的很远,只能通过电话交流。 Bob的心情会随天气的好坏而变化,天气sunny的时候,他就happy,天气rainy的说话,他就grumpy。Bob通过电话告诉Alice他很happy,Alice就可以推测Bob那的天气是sunny,反之,也可以推测出rainy。 那么,如果问题再稍微复杂一点呢。 假如Bob的心情在sunny的时候并不总是happy,也有可能是grumpy,而天气是rainy的时候,Bob的心情也可能是happy。那么即便Alice知道了Bob的心情,她也不能确定Bob所在地的天气到底怎样。 假设Alice已经计算出sunny的时候Bob心情为happy的概率和grumy的概率,还有rainy时候happy和grumpy的概率。那么,Alice虽然不像之前那样可以百分百确定天气,但是还是可以有较大概率推测出天气的。

EthSnarks以太坊混币器【零知识证明】

匆匆过客 提交于 2020-08-08 22:00:31
Miximus是一个用于以太坊区块链的去中心化混币器和匿名转账应用,由EthSnarks作者开发,用于展示零知识证明在以太坊上的实用性。本文介绍Miximus以太坊混币应用的安装使用方法、工作原理和实现细节。 用自己熟悉的语言学习以太坊DApp开发: Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、Miximus混币应用概述 利用Miximus混币应用,你可以存入1个ETH,然后利用zkSNARK证据证明你持有这个币的消费密钥,通过验证之后就可以提币了,整个过程保证了匿名性。 Miximus的主要源代码包括: Miximus.sol miximus.py test_miximus.py miximus.cpp zkSNARK证明方作为原生库构建,因此可以打包进你的应用,当提供正确的参数后,库会返回JSON格式的zkSNARK证据。你可能会认为zkSNARKs很慢 —— Miximus选择的算法生成证据的平均时间是5秒,不过我们还在研究其安全特征。 2、构建Miximus混币引用 如果在Linux上构建Miximus混币应用,需要先安装以下依赖软件: cmake 3 g++ or clang++ gmp libcrypto boost npm / nvm 在OSX上需要Brew和nvm:

TIOBE 8 月编程语言:C、Java 差距拉大,R 语言盛行

若如初见. 提交于 2020-08-05 17:56:34
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 编程语言社区 TIOBE 最新发布了 8 月编程语言排行榜。 相比上个月,本月 TIOBE 指数整个体变化并不大。C 语言依然保持强劲的增长势头,与第二名 Java 之间差距逐月增大,从上个月相差 1.35% 的份额逐步增长到 2.55% 的差额。 在 TIOBE Top 10 榜单中,R 语言上个月被 TIOBE 官方称之为“史无前例的高光时刻” , 本月继续保持,且在数据分析和统计计算等领域,也成为开发者最受欢迎的编程语言之一。回看 2019 年 8 月,R 语言还处于第 20 位,一年后,一连上升了 12 个名次,到达了第 8 位。对此,TIOBE 官方预测,R 语言也有望成为 2020 年 TIOBE 年度编程语言。 除了以上,Go、Swift、SQL 三种语言也进行了位置角逐: Swift 在本月下降 2 个名次,从第 10 名降到了第 12 名; SQL 将其取而代之,成为第 10 名。 其他编程语言排名 同样值得注意的是,Groovy 重新进入了 TIOBE 编程语言排行榜的 TOP 20名,并且 Hack 在第 44 位,也成功进入了前 50 名。 下面列出了完整的 21-50 名,因为是非官方发布的,所以可能存在遗漏: 第 51-100 名如下

.Net Core微服务入门全纪录(七)——IdentityServer4-授权认证

只愿长相守 提交于 2020-08-04 22:19:00
前言 上一篇【 .Net Core微服务入门全纪录(六)——EventBus-事件总线 】中使用CAP完成了一个简单的Eventbus,实现了服务之间的解耦和异步调用,并且做到数据的最终一致性。这一篇将使用IdentityServer4来搭建一个鉴权中心,来完成授权认证相关的功能。 IdentityServer4官方文档: https://identityserver4.readthedocs.io/ 鉴权中心 创建ids4项目 关于IdentityServer4的基本介绍和模板安装可以看一下我的另一篇博客【 IdentityServer4 4.x版本 配置Scope的正确姿势 】,下面直接从创建项目开始。 来到我的项目目录下执行: dotnet new is4inmem --name IDS4.AuthCenter 执行完成后会生成以下文件: 用vs2019打开之前的解决方案,把刚刚创建的ids项目添加进来: 将此项目设为启动项,先运行看一下效果: 项目正常运行,下面需要结合我们的业务稍微修改一下默认代码。 鉴权中心配置 修改Startup的ConfigureServices方法: // in-memory, code config builder.AddInMemoryIdentityResources(Config.IdentityResources); builder

LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)

 ̄綄美尐妖づ 提交于 2020-08-04 16:24:01
文章目录 1. 比赛结果 2. 题目 1. LeetCode 5177. 转变日期格式 easy 2. LeetCode 5445. 子数组和排序后的区间和 medium 3. LeetCode 5446. 三次操作后最大值与最小值的最小差 medium 4. LeetCode 5447. 石子游戏 IV hard(博弈DP) 1. 比赛结果 时隔近5个月,第二次全过,第一次全过是 第20场双周赛 。 第二次全部做出来了,可能题目简单点!第一题没有补零,错误一发,第二题,不必排序,错误一发,继续加油! 全国排名: 477 / 2545,18.7%;全球排名: 1292 / 8175,15.8% 2. 题目 1. LeetCode 5177. 转变日期格式 easy 题目链接 给你一个字符串 date ,它的格式为 Day Month Year ,其中: Day 是集合 {"1st", "2nd", "3rd", "4th", ..., "30th", "31st"} 中的一个元素。 Month 是集合 {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} 中的一个元素。 Year 的范围在 ​[1900, 2100] 之间。 请你将字符串转变为 YYYY-MM-DD

写代码注意了,打死都不要用 User 这个单词

♀尐吖头ヾ 提交于 2020-07-29 01:59:22
当你意识到你在项目开始时做的轻量、简单的设想竟然完全错了时,你已经用了六个月的时间投入到这个项目上。 现在你需要解决这些问题,才能让这个系统继续运行下去,你发现你用在这个项目上的精力远远超出了你的预期,如果一开始就用正确的方式来做,就不会发生这样的事。 今天,我要告诉你的是一个经常犯的错误,一个会给你带来无穷无尽的问题的单词,那就是“users”。 这个单词有两个最基本的错误: 1、对你的需求来说 “User” 几乎从来都不是一个好的描述。 2、“User” 会导致一个基本的设计安全缺陷。 “user” 的概念是模糊不清的,使用更精准的术语几乎总是能起到更好的效果。 你没有使用者 最开始,没有任何一个软件系统真的有使用者存在。乍一看“user”是一个好的描述,但是你稍微一想就会意识到你的业务逻辑实际上比这要复杂的多。 我会使用三个例子,从一个极端的情况出发。 机票预订系统没有“users” 我曾经给机票预订系统写过访问控制逻辑,下面只是一小部分需求: 旅客可以使用预定记录码通过网站查看预定信息。 购买者可以通过信用卡号后四位数在网站上修改预订信息。 旅行社可以查看和修改他们的预订。 航空公司的值机人员可以根据角色和航空公司来查看和修改预订信息,这需要旅客提供身份信息。 不再一一列举。一些与人类相关的基本概念是“旅客”,“代理”(网站也可是看作代理)和“购买者”。 “user