8.54 亿中文用户占了世界上 20% 的互联网用户,比美国人口的两倍还多。北京大学汪定博士以第一作者完成的一项研究发现,虽然中文用户的密码构造行为与英文用户有很大差异,但世界各大知名网站对中英文用户采取同样的密码保护措施,都没有考虑中文用户密码的特点。
对于黑客而言,各大网站的密码保护措施无异于皇帝的新衣。
今年 8 月,这项针对中英文网民密码比较的研究发表在全球四大顶级信息安全学术会议之一的 USENIX (美国高等计算系统协会)Security 会议上。
中文网民常用密码:生日和手机号
汪定团队分析了 2009 年到 2012 年间由黑客曝光的 1.06 亿个真实网络密码,其中包括 6 个中文服务器上的 7310 万个密码和 3 个英文服务器上的 3320 万个密码。值得注意的是,虽然这是 2012 年之前的数据,但多年来密码系统进化很慢,其改变是很少的。 他们还比较了社交论坛、游戏、电子商务网、程序员论坛以及雅虎英文国际用户的密码。研究发现,与英文互联网用户相比,中文互联网用户的确在密码设置上有特点。
中文网民更喜欢用数字作为密码,尤其是手机号和生日,英文网民则更喜欢用纯粹字母作为密码。据汪定此前研究,中文网民的密码有 27% 到 45% 仅由数字构成,英文网民密码仅由数字构成的低于 16%。 英文网民倾向于用某些单词和短语,有 25.88%的网民会将 5 个字母以上的单词作为密码模块,如 password(密码)、letmein(让我登录)、sunshine(阳光)、princess(公主),当然也包括“abcdef”“abc123”以及“123456”。
研究还发现,16.99% 的中文网民热衷在密码中插入 6 个日期数字的模块,这个数字更可能是生日。有 30.89% 的中文网民使用 4 个以上的日期数字,这个比例是英文网民的 3.59 倍。13.49% 的中文网民使用 4 位数的年份数据作为密码模块,是英文网民的 3.55 倍。
更有意思的是,如果一个中文用户使用一长串数字做密码,那么这个密码是 11 位手机号的概率是 66.74%。要知道,2.91% 中文网民使用 11 位手机号码作为密码模块,而 4.36%的中文网民口令含有 11 位以上的数字,因此其概率为 2.91/4.36=66.74%。 类似地,如果知道一个中文用户的密码不低于 11 位,那么这个密码含有 11 位手机号的概率是 23.48%。要知道,2.91% 中文网民使用 11 位手机号码构造密码,同时有 12.39%的中文网民密码长度不低于 11 位,因此其概率为 2.91/12.39=23.48%。 中文网民只有 2.41%使用英文单词作为密码模块,但他们更喜欢用拼音名字(11.50%),尤其是全名。 此外,爱情主题在中国网民口令中占很大地位,比如“woaini1314”“5201314”。
研究发现,一些基于英文字母的所谓“强”密码可能在中文环境中很弱,比如“woaini1314”,这个密码在谷歌、新浪微博等网络平台均被评为强等级,然而中文网络用户很容易猜到这个密码的含义。 再比如“brysjhhrhl”,大部分中文网民能猜到这是“白日依山尽,黄河入海流”的缩写。这就让从英文用户视角解决密码安全问题的思路出现偏差。
暴力破解一般是指拿到网站口令文件库,然后在本地破解。因为往往网站存储的不是明文,有可能是采用了 Hash 函数并加盐运算后存储,需要把它恢复出来,那就需要反向的破解,包括基于猜测字典的破解和暴力破解。后者一般不关注破解效率,适用于算力强大的攻击者。
目前绝大部分网站都把保护口令帐户的责任推给用户,要让用户生成所谓的强口令,如果帐户出现安全问题,那是因为用户自己的口令强度不够。而现在学术界的共识是,应让网站承担更多的责任,网站可以把用户的口令保护得更好,做到别让口令文件泄漏,即使泄露了也能及时发现,并且通过使用慢哈希(如 Scrypt,Argon2),让黑客也很难将明文口令恢复出来。
在可预见的未来,口令仍将是最主要的身份认证方法。在口令基础之上防范的方法只是锦上添花。因为指纹可以复制且不可更改,基于深度学习的换脸软件又能绕过面部 3D 识别,那么只有口令在我们大脑当中谁也轻易拿不走,至少目前口令的脑电波还不能无线远距离破译。
无论什么机密,只要是涉及人,特别容易出错,尤其是在当前口令安全理论体系还没有建立、很多基础性问题没有解决的情况下。
实例:修改表 emp 的 ename 字段,将 varchar(10) 改为 将 varchar(20)mysql> alter table emp modify ename varchar(20);实例:表 emp 新增字段 age,类型为 intmysql> alter table emp add age int;... ...
一、准备工作(环境要求)1、版本要求 mysql必须是mysql5.6以上版本,通过以下命令查看是否版本支持123456mysql> select version();+-----------+| version() |+-----------+| 8.0.24 |+-----------+2、字段类型要求 数据表字段类型必须是以下类型中的其中一个1var
MySQL优化查询的几种方式
查询MySQL账号加密方式==================## 介绍本文将教你如何查询MySQL账号的加密方式。作为一名经验丰富的开发者,你需要告诉一位刚入行的小白每一步需要做什么,并提供相应的代码和注释。以下是整个流程的步骤:```mermaidflowchart TD A[连接到 MySQL 数据库] --> B[查询账号加密方式] --> C[获取结果] --> D
# MYSQL 修改加密方式在MYSQL数据库中,我们经常会遇到需要修改密码加密方式的情况,可能是为了提高安全性,也可能是为了与其他系统兼容。本文将介绍如何在MYSQL中修改密码加密方式,并提供相应的代码示例。## 加密方式概述MYSQL中有多种密码加密方式,包括 `mysql_native_password`、`caching_sha2_password` 等。不同的加密方式会影响密
# 修改MySQL加密方式后密码改了在管理数据库时,一项不可忽视的重要任务是保护用户的密码安全。近年来,MySQL数据库也逐渐更新和改进其加密方式。本文将探讨如何修改MySQL的密码加密方式,并提供相关的代码示例,最后通过可视化工具来帮助你理解这项操作对整个系统的影响。## MySQL密码加密方式的变化早期版本的MySQL主要使用`mysql_native_password`作为密码加
# 实现 zabbix mysql 账号加密## 简介在 zabbix 中,我们可以使用 MySQL 来存储监控数据。为了保护数据库的安全性,我们需要对 MySQL 账号进行加密。本文将介绍如何在 zabbix 中实现这一功能。## 流程下面是实现“zabbix mysql 账号加密”的整个流程:| 步骤 | 描述 || ---- | ---- || 1. | 生成加密密码 |
# MySQL账号表加密方案在开发数据库应用程序时,保护用户数据的安全性非常重要。其中一个重要的方面是对用户账号和密码进行加密存储,以防止敏感信息被恶意获取。本文将介绍一种基于MySQL的账号表加密方案,帮助开发者保护用户数据的安全性。## 1. 加密算法选择在选择加密算法时,我们需要考虑安全性、性能和可扩展性等因素。对于密码加密,常用的算法有MD5、SHA1、SHA256和BCryp
# MySQL 数据加密方式## 引言MySQL 是一种流行的关系型数据库管理系统,广泛应用于各个行业和领域。对于存储在 MySQL 数据库中的敏感数据,加密是一种常见的安全措施。本文将介绍 MySQL 数据加密的几种方式,并提供相应的代码示例。## 数据加密方式### 1. 数据库层面加密MySQL 提供了一些内置的数据加密函数,可以在 SQL 查询语句中使用这些函数来加密和
# MySQL内置加密方式MySQL是一种流行的关系型数据库管理系统,提供了多种内置的加密方式来增强数据的安全性。本文将介绍MySQL的内置加密方式,并提供代码示例来演示如何使用这些加密方法。## 1. 加密方式概述MySQL提供了以下几种内置加密方式:1. `PASSWORD`:使用旧版的MySQL密码哈希算法进行加密。2. `AES_ENCRYPT`和`AES_DECRYPT
# MySQL密码加密方式在日常开发中,我们经常需要处理用户密码的加密存储,以保护用户数据的安全性。MySQL提供了几种方式来加密密码,本文将介绍一些常用的MySQL密码加密方式,并提供相应的代码示例。## 常用的MySQL密码加密方式1. **MD5加密**MD5是一种常用的密码加密算法,它将任意长度的文本转换成固定长度的128位哈希值。在MySQL中可以通过`MD5()`函数对
# MySQL存储加密方式实现指南## 1. 概述本文将指导你如何在MySQL中实现存储加密方式。存储加密是一种常见的安全措施,它可以保护敏感数据在数据库中的存储,以防止未经授权的访问者查看或篡改数据。在本指南中,我们将使用MySQL提供的加密函数和功能来实现存储加密。我们将按照以下步骤进行:1. 创建一个新的MySQL表格,用于存储加密后的数据;2. 使用加密函数对数据进行加密
不仅是操作系统,数据库mysql也有root密码,给我们数据库一层安全保护,那么在Linux系统中,mysql要如何修改root密码呢?特别是忘记了root密码要怎么办?Linux mysql如何更改root密码通过登录mysql系统:代码如下# mysql -uroot -pEnter password: 【输入原来的密码】mysql》use mysql;mysql》 update use
1、前言Oracle已经发布了MySQL8.0GA,GA在外国就是release版本,也就是正式版,不是测试版。安装MySQL总是看到除了数据库服务外,还安装了一大堆基本没不会用到的服务,所以这里把MySQL的安装过程过一遍。体验安装MySQL8.0的时候,发现我的navicat连不上MySQL8.0了,经查找原来MySQL8.0提供了两种密码加密的方式,我安装的时候选了新的那种。2、安装MySQ
MySQL数据库的认证密码有两种方式,MySQL 4.1版本之前是MySQL323加密,MySQL 4.1和之后的版本都是MySQLSHA1加密,MySQL数据库中自带Old_Password(str)和Password(str)函数,它们均可以在MySQL数据库里进行查询,前者是MySQL323加...
50. 关于JWT(续)JWT是不安全的,因为在不知道secretKey的情况下,任何JWT都是可以解析出Header、Payload部分的,这2部分的数据并没有做任何加密处理,所以,如果JWT数据被暴露,则任何人都可以从中解析出Header、Payload中的数据!至于JWT中的secretKey,及生成JWT时使用的算法,是用于对Header、Payload执行签名算法的,JWT中的Signa
1、前言 Oracle已经发布了MySQL8.0GA,GA在外国就是release版本,也就是正式版,不是测试版。 安装MySQL总是看到除了数据库服务外,还安装了一大堆基本没不会用到的服务,所以这里把MySQL的安装过程过一遍。体验安装MySQL8.0的时候,发现我的navicat连不上MySQL8.0了,经查找原来MySQL8.0提供了两种密码加密的方式,我安装的时候选了新的那种。2、
本文介绍了Linux环境下MySQL数据库的安装配置及基础使用方法。主要内容包括:1) MySQL的核心功能和应用场景,如数据存储、SQL支持、事务处理等;2) 详细安装步骤,包括更新软件包、安装MySQL Server和安全配置;3) 数据库基本操作测试,涵盖数据库创建、表操作、数据增删改查;4) MySQL服务管理方法;5) 建议创建专用管理用户的安全实践。文章旨在帮助开发者快速掌握MySQL在Linux服务器上的部署和使用技巧,避免重复工作。
学就像网络世界的"安全卫士",从简单的字母替换发展到今天复杂的数学算法。理解这些基础概念不仅有助于开发安全的应用,更是每个IT从业者的必备知识。
分支发散会给GPGPU程序带来严重性能损耗,尤其当线程束内线程的循环迭代次数(trip-count)不同时,线程需等待迭代次数最多的线程,形成“循环诱导发散”。为此,研究提出循环合并(Loop Merging, LM)软件优化:将内层发散循环与一个或多个外层循环合并为单个循环,避免线程在每次外层循环迭代中相互等待,提升SIMD执行效率。该优化在LLVM中实现,泛化性优于传统循环合并(Loop Coalescing)(支持非完美嵌套、while循环及循环间控制流);
什么是贪心呢,就是说用最小的付出得到最大的收获。它有很广泛的应用,如哈夫曼树、单元最短路径、构造最小生成数的Prim算法和Kruskal算法等。举个简单的例子你去买东西付钱的时候你钱包里有各种各样的面值钞票,你如果想使用尽量少的张数,你就会将面值大的用多几张。不过以下我会举例一个更好理解的例子(用同样的钱去买尽可能多的月饼,不是不很贪心,很贪吃)这道题使用了对价格进行快速排序,变成从小到大,再将价格一个个加,加一次计数一次,直到钱不够了。这就是用现有的钱买到尽可能多的月饼。希望这能帮助到大家。
栈又叫堆栈局部变量(非静态)、函数参数、返回值等等,栈是向下增长的。堆用于程序运行时动态分配内存堆可以向上增长。数据段全局数据和静态数据。代码段可执行代码和只读常量。C语言的动态内存管理方式malloc calloc reallocclass Apublic::_a1(a1),_a2(a2)if (this!return 0;//{