密码学——密码学概述、分类、加密技术(山东省大数据职称考试)
大数据分析应用-初级
第一部分 基础知识
一、大数据法律法规、政策文件、相关标准
二、计算机基础知识
三、信息化基础知识
四、密码学
五、大数据安全
六、数据库系统
七、数据仓库.
第二部分 专业知识
一、大数据技术与应用
二、大数据分析模型
三、数据科学
密码学
- 大数据分析应用-初级
- 前言
- 一、密码学概述
- 二、密码学分类
- 三、加密技术
- 练习题目
前言
密码学
(一)密码学概述
1、了解密码学发展史、密码学概念。
(二)密码学分类
1、了解密码学的分类,包括按时间、按密钥、按密码体制和按明文处理方法分类等。
(三)加密技术
1、了解古典密码学、对称密码算法、非对称密码算法、哈希算法、散列函数(MD5算法)、数字签名技术。
2、掌握软件与硬件加密技术。
一、密码学概述
密码学概念:
密码学(Cryptology)是一门研究密码保护通信手段的科学,属于应用数学的范畴,包括加密理论与解密理论。密码学技术可以使消息的内容对(除发送者和接收者以外)的所有人保密,可以使接收者验证消息的正确性。
密码学发展史:
1. 古典密码学阶段(古代至1949年):
古典密码学主要基于替换和置换这两种核心手段。替换是指明文中的每一个字符被替换成密文中的另一个字符;置换是密文和明文字母保持相同,但顺序被打乱。
这一时期出现了多种加密方法,如斯巴达的“塞塔式密码”、凯撒密码、维吉尼亚密码、滚筒密码、掩格密码以及圆盘密码等。这些密码技术更像是一门艺术,其数据的安全基于算法的保密,密码学专家是凭知觉和信念来进行密码设计和分析,而不是推理和证明。
2. 近代密码学阶段(1949年至1975年):
1949年,香农发表了《保密系统的通信理论》,为对称密码系统建立了理论基础,从此密码学成为一门科学。
20世纪70年代,随着计算机科学的蓬勃发展,密码学得到了新的概念和工具,如快速电子计算机和现代数学方法。
Arthur Scherbius于1919年设计出了历史上最著名的密码机——德国的Enigma机,它在二战期间被广泛使用,但也引发了加密与破译的激烈对抗。
近代密码发展中一个重要突破是“数据加密标准”(DES)的出现,它使密码学得以从政府走向民间,并在金融等商业领域广泛使用。
3. 现代密码学阶段(1976年至今):
1976年,W.Diffie和M.Hellman在发表的文章“密码学的新方向”中首次公开提出了公钥密码(Public-key Cryptography)的概念。公钥密码的提出实现了加密密钥和解密密钥之间的独立,解决了对称密码体制中通信双方必须共享密钥的问题,在密码学界具有划时代的意义。
1977年,美国麻省理工学院提出第一个公钥加密算法RSA算法,之后ElGamal、椭圆曲线、双线性对等公钥密码相继被提出,密码学真正进入了一个新的发展时期。
现代密码学技术得到蓬勃发展,密码学技术趋于标准化,并广泛应用于金融、民生、教育、电子商务、物联网、工业制造等领域。
二、密码学分类
按时间分类
- 古典密码:古典密码主要以字符为基本加密单元,用于早期的保密通信。
- 现代密码:现代密码以信息块(多个字符)为基本的加密单元,采用更复杂的算法和密钥管理机制,以提高保密性和安全性。
按密钥分类
- 对称密钥:又称单钥密码或私钥密码,指加密密钥与解密密钥相同。这种密码体制运算速度快,适用于大数据量的加密,但密钥管理相对困难。
- 非对称密钥:又称双钥密码或公钥密码,指加密密钥与解密密钥不同。其中,加密密钥(公钥)可以公开,而解密密钥(私钥)需要保密。非对称密钥密码体制解决了密钥分发和不可否认性的问题,但运算速度相对较慢。
按密码体制分类
- 对称密码体制:如上文所述,加密和解密使用相同的密钥。
- 非对称密码体制:如上文所述,加密和解密使用不同的密钥。
按明文处理方法分类
- 分组密码:加密时将明文分成固定长度的组,用同一密钥和算法对每组进行加密,输出也是固定长度的密文。分组密码多用于网络加密。
- 流密码:也称序列密码,对明文进行连续处理,每次处理一个字符或字节,生成相应的密文。流密码适用于实时通信等需要连续处理的场景。
此外,密码学还可以从其他角度进行分类,如按保密内容算法分类,可以分为受限制算法(算法的保密性基于对算法的保密)和基于密钥算法(算法的保密性基于对密钥的保密);按安全目标分类,可以分为保密体制(主要保证信息不被攻击者窃取)和认证体制(主要保证信息源不被假冒以及信息发送和接受方的身份真实性)。
三、加密技术
1.古典密码学:
定义与原理:古典密码学是密码学发展早期阶段的技术,主要通过简单的替换或置换操作来隐藏明文信息。替换密码是将明文中的每个字符按照一定规则替换为其他字符,如凯撒密码,它将字母表中的字母按照固定的位移量进行替换。置换密码则是改变明文中字符的位置顺序,比如栅栏密码,把明文按一定规律分组后重新排列组合得到密文。
示例与局限性:以凯撒密码为例,如果设定位移量为 3,字母 A 就会被替换成 D,B 替换成 E,以此类推。但这种密码很容易被破解,因为它的密钥空间(可能的密钥数量)较小,对于有一定规律的文本,通过简单的频率分析(统计密文中每个字母出现的频率,与正常语言中字母频率对比)就可以猜出加密规则。
2.对称密码算法:
定义与原理:对称密码算法也叫单钥密码算法,加密和解密使用相同的密钥。发送方和接收方需要事先共享密钥,加密时通过特定的算法将明文和密钥一起运算得到密文,解密时则使用相同的密钥和对应的解密算法把密文还原为明文。
应用场景与安全性:它的加密和解密速度相对较快,适用于对大量数据进行加密,如在本地硬盘数据加密、企业内部网络数据传输加密等场景广泛应用。然而,其安全性依赖于密钥的保密性,密钥管理是一个关键问题。因为在多个用户通信的情况下,需要安全地分发和存储大量的密钥。常见的对称密码算法包括DES、IDEA、AES、BlowFish、Twofish等。其中,AES(高级加密标准)是最常见的对称密码算法之一,被广泛应用于各种安全通信和存储系统中。
3.非对称密码算法
定义与原理:非对称密码算法又称为双钥密码算法,加密和解密使用不同的密钥,分别是公钥和私钥。公钥可以公开,任何人都可以使用公钥对信息进行加密,但只有拥有私钥的人才能解密。其原理基于数学难题,如 RSA 算法是基于大整数分解问题。
应用场景与优势:主要用于密钥交换、数字签名等场景。在电子商务和电子政务等领域发挥重要作用,例如在网上银行中,银行将公钥公开,客户用公钥加密账户信息等敏感数据发送给银行,银行用私钥解密,这种方式解决了对称密码算法中密钥分发的难题,同时还可以提供身份认证功能。常见的非对称密码算法包括RSA、DSA、ECC等。其中,RSA是最著名的非对称密码算法之一,被广泛应用于数字签名、密钥交换等领域。
4.哈希算法与散列函数(以 MD5 算法为例)
定义与原理:哈希算法(也称散列算法)是一种将任意长度的数据映射为固定长度的散列值(也叫哈希值)的算法(该过程不可逆)。散列函数是哈希算法的具体实现。散列函数的主要特点是:
- 查找速度较快:给定明文和哈希算法,在有限时间和有限资源内能计算出哈希值。
- 不可逆:哈希算法是一种单向密码体制,即它是一个从明文到密文的不可逆的映射。只有加密过程,没有解密过程(在理论上无法从哈希值反推出原始数据)。
- 输入敏感:如果散列一段明文,哪怕只更改该段落的一个字母,随后的哈希值都将产生不同的结果。
MD5算法是一种具体的哈希算法实现,它接收任意长度的输入数据,并通过一系列复杂的数学运算生成一个128位的哈希值。MD5算法以512位数据块为单位来处理输入信息,将输入信息划分为若干个512位的数据块,如果最后一块不足512位,会进行填充处理。在处理过程中,MD5算法会进行四轮循环运算,每轮包含16步操作,这些操作涉及到布尔函数(如与、或、非等逻辑运算)、加法运算和移位操作等。
应用场景与局限性:主要用于数据完整性验证和数字签名等。比如在文件下载过程中,网站可以提供文件的 MD5 值,用户下载后可以自行计算文件的 MD5 值并与网站提供的进行对比,如果相同则说明文件在传输过程中没有被篡改。然而,MD5 存在安全隐患,由于其算法结构的一些弱点,已经可以通过碰撞攻击(找到两个不同的输入产生相同的 MD5 值)来破解它,在高安全要求的场景下逐渐被更安全的哈希算法如 SHA - 256 等替代。MD5算法的应用非常广泛,包括安全加密、唯一标识、数据校验等。然而,由于MD5算法的安全性问题(如碰撞问题),在一些对安全性要求较高的场合(如金融领域、重要信息系统等),MD5已经被更安全的哈希算法所替代。
5.数字签名技术
定义与原理:数字签名是一种用于验证消息来源和完整性的技术。发送方使用自己的私钥对消息进行签名操作,生成数字签名,接收方可以使用发送方的公钥来验证数字签名。签名过程通常结合哈希算法,先对消息计算哈希值,然后用私钥对哈希值进行加密得到数字签名。验证时,接收方先计算收到消息的哈希值,再用发送方公钥解密数字签名得到原始哈希值,比较两者是否一致来判断消息是否被篡改和是否来自声称的发送者。
应用场景与重要性:在电子合同、电子文档审批等场景中至关重要。它提供了不可否认性,确保发送方不能否认发送过该消息,同时保证了消息的完整性,防止消息在传输过程中被篡改,从而保障了电子通信的安全性和可信度。
软件加密技术
原理:
软件加密主要是通过编程的方式,利用加密算法对数据进行处理。它将加密算法以软件代码的形式实现,在软件运行过程中,对需要保护的数据进行加密和解密操作。例如,在一个文档编辑软件中,可以通过软件加密技术对文档内容进行加密,当用户保存文档时,软件会使用特定的加密算法(如 AES 等)和用户设置的密钥将文档内容转换为密文进行存储。
常见加密方法:
对称密钥加密软件实现:利用对称密钥算法(如 AES、DES 等)在软件层面进行加密。例如,AES 算法在软件中实现时,会将数据分成固定长度的块(如 128 位),然后通过多轮的字节替换、行移位、列混合和轮密钥加等操作,使用相同的密钥进行加密和解密。这种方法加密和解密速度相对较快,适合对大量数据进行加密。
非对称密钥加密软件实现:基于非对称密钥算法(如 RSA 等)实现软件加密。软件使用公钥和私钥对数据进行加密和解密。例如,在数字签名软件中,发送方使用自己的私钥对文件的哈希值进行加密生成数字签名,接收方使用发送方的公钥进行验证。这种方法在密钥管理和身份认证方面有优势,但加密和解密速度比对称密钥算法慢。
代码混淆与加密:为了防止软件本身的算法被破解,还可以对软件代码进行混淆和加密。代码混淆是通过改变代码的结构和逻辑,使攻击者难以理解代码的真实意图。例如,将变量名替换为无意义的字符,打乱函数的执行顺序等。软件代码加密则是直接对可执行文件或脚本进行加密,在运行时再解密,增加了软件逆向分析的难度。
应用场景:
数据保护:用于保护各种类型的数据,如企业的财务数据、个人的隐私文件等。例如,数据库管理系统可以使用软件加密技术对存储在数据库中的敏感数据进行加密,防止数据泄露。
软件授权与版权保护:通过软件加密可以实现软件的授权管理。例如,软件开发者可以使用加密技术对软件的许可证进行加密,用户只有在获得合法的解密密钥(许可证密钥)后才能正常使用软件,这样可以防止软件盗版。
硬件加密技术
原理:
硬件加密是将加密功能集成到专门的硬件设备中,如加密芯片、加密狗等。这些硬件设备内部包含了加密算法的实现电路和存储密钥的安全区域。在进行加密操作时,数据被发送到硬件设备中,由硬件设备内部的电路使用存储的密钥和加密算法进行加密处理,密文再返回给外部设备。由于密钥存储在硬件的安全区域,并且加密过程在硬件内部完成,大大提高了加密的安全性。
常见加密设备及方法:
加密芯片:加密芯片是一种高度集成的硬件加密设备。它可以实现多种加密算法,并且具有很高的安全性。例如,在一些高端智能手机中,会内置加密芯片来保护用户的数据(如指纹信息、支付信息等)。加密芯片内部有专门的密钥存储区域,采用物理防护措施(如防篡改封装)来防止密钥泄露,同时,芯片内的加密电路可以快速地执行加密和解密操作。
加密狗:加密狗是一种外置的硬件加密设备,通常通过 USB 接口等方式与计算机相连。软件开发者可以将软件的关键部分(如加密算法和密钥)存储在加密狗中,软件在运行时需要与加密狗进行交互才能正常工作。例如,一些专业的设计软件使用加密狗来进行软件授权,用户只有插入合法的加密狗,软件才能启动并使用全部功能,这有效地防止了软件的非法复制和使用。
应用场景:
金融安全领域:在银行卡、U 盾等设备中广泛应用。例如,U 盾内部有加密芯片,存储着用户的数字证书和私钥。当用户进行网上银行转账等操作时,U 盾会使用内部的加密电路和存储的密钥对交易数据进行数字签名等加密操作,确保交易的安全性和用户身份的真实性。
企业数据安全:企业可以使用硬件加密设备来保护重要的数据服务器。例如,在服务器的硬盘阵列中加入硬件加密模块,对存储的数据进行加密,防止数据被非法访问,即使硬盘被盗,没有正确的密钥也无法读取数据。
软件加密与硬件加密的比较
- 安全性:硬件加密由于在硬件层面操作,通常认为更安全,不易受到恶意软件的攻击。而软件加密则可能受到操作系统漏洞或底层硬件性能的影响。
- 成本:硬件加密设备可能需要额外的购买和维护成本,而软件加密则通常成本较低,易于部署。
- 灵活性:软件加密可以更容易地更新和升级,以适应新的加密标准和算法。而硬件加密则需要更换硬件设备或进行专门的升级操作。
- 性能:硬件加密通常提供更高的性能,尤其是在处理大量数据时。而软件加密则可能受到计算机性能的限制。
综上所述,软件加密和硬件加密各有其优势和局限。在实际应用中,应根据具体需求和安全要求选择合适的加密技术。例如,在需要高安全性和稳定性的场合下,可以选择硬件加密;而在成本预算有限或需要频繁更新加密算法的情况下,则可以选择软件加密。
练习题目
一、单选题
-
密码学中,用于隐藏信息原始含义的转换后信息被称为( )
A. 明文
B. 密文
C. 密钥
D. 密码协议
答案:B。解析:明文是未加密的原始信息,密文是将明文通过特定的算法和密钥转换后的信息,用于隐藏原文含义;密钥是用于加解密算法的秘密参数;密码协议是使用密码技术的通信协议。 -
以下哪个时期标志着密码学从古典向现代转变的关键阶段( )
A. 19 世纪末 - 20 世纪初
B. 第一次世界大战期间
C. 第二次世界大战期间
D. 20 世纪 70 年代
答案:A。解析:19 世纪末 - 20 世纪初,随着计算机技术和数学理论的初步发展,密码学开始从基于简单手工操作的古典密码学向依赖复杂数学算法和计算机技术的现代密码学转变。 -
对称密钥密码体制中,如果密钥长度为 128 位,那么理论上密钥的可能组合数量是( )
A.
B.
C.
D.
答案:A。解析:对于 n 位的二进制密钥,其可能的组合数量是,所以 128 位密钥的可能组合数量是
。
-
下列哪种古典密码方式是通过改变字符位置顺序来加密的( )
A. 凯撒密码
B. 替换密码
C. 栅栏密码
D. 仿射密码
答案:C。解析:凯撒密码和仿射密码属于替换密码,是用其他字符替换明文字符;栅栏密码是将明文字符分组后改变位置顺序,属于置换密码。 -
以下哪种算法主要用于验证数据完整性和数字签名( )
A. 对称密码算法
B. 非对称密码算法
C. 哈希算法
D. 序列密码算法
答案:C。解析:哈希算法将任意长度的数据映射为固定长度的散列值,主要用于验证数据完整性和数字签名;对称密码算法用于加密和解密数据;非对称密码算法用于密钥交换和数字签名等多种功能;序列密码算法是一种加密方式,重点在加密数据而不是验证完整性。 -
在非对称密钥密码体制中,公钥用于( )
A. 解密
B. 签名
C. 加密
D. 验证签名
答案:C。解析:在非对称密钥密码体制中,公钥用于加密,私钥用于解密和签名,验证签名也是使用公钥。 -
MD5 算法产生的散列值长度是( )
A. 128 位
B. 160 位
C. 256 位
D. 512 位
答案:A。解析:MD5 算法产生的散列值长度是 128 位。 -
软件加密中,代码混淆的主要目的是( )
A. 提高软件运行速度
B. 减小软件体积
C. 防止软件算法被破解
D. 增加软件功能
答案:C。解析:代码混淆是通过改变代码的结构和逻辑,使攻击者难以理解代码的真实意图,主要目的是防止软件算法被破解。 -
以下硬件加密设备中,常用于高端智能手机保护用户数据的是( )
A. 加密狗
B. 加密芯片
C. U 盾
D. 硬盘加密模块
答案:B。解析:加密芯片可集成到智能手机中,用于保护用户的数据,如指纹信息、支付信息等;加密狗主要用于软件授权;U 盾主要用于网上银行等金融操作;硬盘加密模块用于服务器或计算机硬盘数据加密。 -
在密码体制分类中,将明文逐位与密钥流运算的是( )
A. 分组密码
B. 序列密码
C. 公钥密码
D. 哈希密码
答案:B。解析:序列密码(流密码)将明文逐位地与密钥流进行运算;分组密码是将明文划分成固定长度的组进行加密;公钥密码是基于非对称密钥的密码系统;哈希密码主要用于生成散列值,不是加密明文的方式。
二、多选题
-
密码学按时间分类包括( )
A. 古代密码学
B. 古典密码学
C. 近代密码学
D. 现代密码学
答案:BD。解析:密码学按时间分为古典密码学(古代到 19 世纪末)和现代密码学(20 世纪初至今)。 -
对称密钥密码体制的优点有( )
A. 加密和解密速度快
B. 密钥管理相对简单
C. 适用于大量数据加密
D. 提供身份认证功能
答案:AC。解析:对称密钥密码体制加密和解密速度快,适用于大量数据加密;但其密钥管理困难,不直接提供身份认证功能。 -
以下属于古典密码学替换密码的有( )
A. 简单替换密码
B. 维吉尼亚密码
C. 希尔密码
D. 置换密码
答案:ABC。解析:简单替换密码、维吉尼亚密码、希尔密码都属于替换密码,是将明文字符替换为其他字符来加密;置换密码是改变字符位置顺序,不属于替换密码。 -
哈希算法的应用场景包括( )
A. 数据完整性检查
B. 数字签名
C. 密码存储
D. 数据加密
答案:ABC。解析:哈希算法主要用于数据完整性检查、数字签名和密码存储(存储密码的哈希值而不是明文密码),它一般不用于数据加密,因为哈希是单向的,很难从哈希值还原出原始数据。 -
软件加密技术的实现方式包括( )
A. 对称密钥加密软件实现
B. 非对称密钥加密软件实现
C. 代码混淆与加密
D. 硬件绑定软件加密
答案:ABC。解析:软件加密技术可以通过对称密钥加密软件实现、非对称密钥加密软件实现以及代码混淆与加密来实现;硬件绑定软件加密不是软件加密技术本身的实现方式,而是涉及软件与硬件结合的加密方式。 -
硬件加密技术的优势有( )
A. 安全性高
B. 加密速度快
C. 密钥存储安全
D. 便于软件升级
答案:ABC。解析:硬件加密技术将加密功能集成到硬件设备中,具有安全性高(如采用物理防护措施防止密钥泄露)、加密速度快(硬件电路执行加密操作)、密钥存储安全(有专门的安全区域存储密钥)等优势;硬件加密设备可能会对软件升级有一定限制,并不一定便于软件升级。
三、判断题
-
古典密码学的加密方法在现代已经完全没有应用价值。( )
答案:错误。解析:虽然现代密码学技术先进,但古典密码学的一些基本思想和简单加密方式在某些简单场景或教学等领域仍有一定价值。 -
非对称密钥密码体制中,加密和解密速度比对称密钥密码体制快。( )
答案:错误。解析:非对称密钥密码体制加密和解密速度相对较慢,对称密钥密码体制加密和解密速度快。 -
只要哈希算法产生的散列值相同,那么原始数据一定相同。( )
答案:正确。解析:哈希算法的特点是对于给定的数据能产生唯一固定长度的散列值,如果散列值相同,理论上原始数据相同,但目前一些哈希算法可能受到碰撞攻击的影响。 -
软件加密技术比硬件加密技术安全性更高。( )
答案:错误。解析:硬件加密技术通常具有更高的安全性,因为它将加密功能集成在专门的硬件设备中,有物理防护措施防止密钥泄露等优势。
相关文章:
密码学——密码学概述、分类、加密技术(山东省大数据职称考试)
大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 密码学 大数据…...
Linux 入门教程:从命令行开始
Linux 是一个强大且灵活的操作系统,广泛应用于服务器、嵌入式设备、开发环境等领域。如果你是刚接触 Linux 的新手,最重要的一步就是掌握命令行操作。虽然 Linux 提供了图形界面,但很多强大功能只能通过命令行来实现。今天,我们就…...
Python中的异步编程:从基础到实践
在现代编程中,异步编程已经成为提高程序性能和响应能力的重要手段。Python,作为一种动态、解释型的高级编程语言,提供了多种异步编程的解决方案。本文将从Python异步编程的基础知识出发,逐步深入到实际应用中,帮助读者理解和掌握这一技术。 1. 异步编程简介 异步编程是一…...
如何使用 Python 实现简单的 Web 服务器?
为了实现一个简单的Web服务器,Python提供了多种方法。对于快速原型设计和学习目的来说,最简单的方法之一是使用内置的http.server模块。 然而,在实际开发中,更常见的做法是使用像Flask或Django这样的框架来构建更为复杂的应用程序…...
【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用(2024/12/12补充)
最终效果 文章目录 最终效果更好的方式(2024/12/12补充)前言为什么使用CharacterControllerSimpleMove和Move如何选择?1. SimpleMove2. Move 配置CharacterController参数控制相机移动跳跃方式一方式二 下蹲处理下坡抖动问题实现奔跑和不同移…...
6_Sass 选择器函数 --[CSS预处理]
Sass 提供了一系列的选择器函数,用于操作和组合CSS选择器。这些函数可以帮助你更灵活地创建样式规则,并且可以减少重复代码。以下是几个常用的选择器函数及其用法: 1. selector-append($selector1, $selector2...) selector-append($select…...
系列2:基于Centos-8.6Kubernetes 集成GPU资源信息
每日禅语 自省,就是自我反省、自我检查,自知己短,从而弥补短处、纠正过失。佛陀强调自觉觉他,强调以达到觉行圆满为修行的最高境界。要改正错误,除了虚心接受他人意见之外,还要不忘时时观照己身。自省自悟之…...
C# 探险之旅:第三十五节 - 类型class之抽象类 (Abstract Class) 和 抽象方法 (Abstract Method)
👋 嗨,勇敢的探险家们!欢迎再次踏上C#的神秘之旅。今天,我们要进入一片既神秘又充满无限可能的领域——抽象类与抽象函数的奇幻森林。想象一下,你是一名勇敢的骑士,要在这片森林里寻找传说中的“编程之宝”…...
npm内存溢出
项目过大运行项目内存溢出 报错代码 运行内存溢出 increase-memory-limit ‘“node --max-old-space-size8192”’ 不是内部或外部命令,也不是可运行的程序 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of m…...
CSS|08 浮动清除浮动
浮动 需求: 能够实现让多个元素排在同一行,并且给这些元素设置宽度与高度! 让多个元素排在同一行:行内元素的特性 给这些元素设置宽高:块级元素的特性 在标准文档流中的元素只有两种:块级元素和行内元素。如果想让一些元素既要有块级元素的特点也要有行内元素的特…...
【学习笔记】反向传播到底是如何进行的?
文章目录 一、写在前面二、举个例子三、混合损失函数如何进行呢? 一、写在前面 不知道小伙伴们有没有考虑过这种感觉,在最开始学习深度学习的时候,一定都了解过前向传播,反向传播等等,但是在实际的操作过程中却“几乎…...
利用cnocr库完成中文扫描pdf文件的文字识别
很多pdf文件文字识别软件都会收费,免费的网页版可能会带来信息泄露,还有一些类似于腾讯AI和百度AI的接口都有调用次数限制,因此,利用识别正确率极高且免费的cnocr库来自己动手做个pdf文件文字识别程序就是一个很不错的选择。以下程…...
el-table ToggleRowSelection实现取消选中没效果(virtual-scroll)
场景: 就是在虚拟列表el-table选中之后 点击查询 默认之前选中的 现象: 就是实现选中, 但是无法去除勾选等等 问题发现: 看定位的数据 有多个一样的,我想着勾选之前 先去掉勾选 ,但是没效果或者说“相同的…...
Vue入门到精通:运行环境
Vue入门到精通:运行环境 Vue3的运行环境搭建主要有两种方法:一种是直接在页面中引入Vue库,另一种是通过脚手架工具创建Vue项目。 (一)页面直接引入Vue库 页面直接引入Vue库的方法,是指在HTML网页中通过s…...
LNK2001: virtual struct QMetaObject const 错误的解决方法和原因
目录 1.现象 2.原因分析 3.解决方法 3.1.方法1 3.2.方法2 1.现象 今天调整了下工程目录结构(环境是VS2019Qt5.12.12),重新编译突然出现以下错误: 没有修改代码,怎么就出现这个错误了呢?从上面的错误来看,其实就是…...
电脑win11家庭版升级专业版和企业版相关事项
我的是零刻ser9,自带win11家庭版,但是我有远程操控需求,想用windows系统自带的远程连接功能,所以需要升级为专业版。然后在系统激活页面通过更改序列号方式,淘宝几块钱买了个序列号升级成功专业版了。但是,…...
用户认证系统登录界面
下面是使用HTML和JavaScript实现的一个中文版登录界面,包含登录、注册和修改密码功能。注册成功后会显示提示信息,在登录成功后进入一个大大的欢迎页面。 1.代码展示 <!DOCTYPE html> <html lang"zh-CN"> <head><meta …...
深圳国威HB1910数字IP程控交换机 generate.php 远程命令执行漏洞复现
0x01 产品描述: 深圳国威主营国威模拟、数字、IP 交换机、语音网关、IP 电话机及各种电话机。深圳国威电子有限公司HB1910是一款功能强大的网络通信设备,适用于各种企业通信需求。 0x02 漏洞描述: 深圳国威电子有限公司HB1910数字IP程控交换机generate.php存在远程命令执行…...
客户端(浏览器)vue3本地预览txt,doc,docx,pptx,pdf,xlsx,csv,
预览文件 1、入口文件preview/index.vue2、预览txt3、预览doc4、预览pdf5、预览pptx6、预览xlsx7、预览csv 1、入口文件preview/index.vue 预览样式,如pdf 文件目录如图所示: 代码如下 <template><div class"preview-wrap" ref&…...
(八)机器学习 - 线性回归
线性回归(Linear Regression)是一种统计学方法,用于建立一个或多个自变量(解释变量)与因变量(响应变量)之间的线性关系。线性回归的目的是通过最小化预测误差来找到最佳的线性拟合模型ÿ…...
Springboot 整合 Java DL4J 打造金融风险评估系统
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s…...
CSDN博客:如何使用Python的`datasets`库转换音频采样率
CSDN博客:如何使用Python的datasets库转换音频采样率 什么是采样率?代码用途:调整音频数据的采样率完整代码示例代码详解运行结果(示例)总结 在这篇文章中,我们将学习如何使用Python的datasets库对音频数据…...
geoserver(1) 发布sql 图层 支持自定义参数
前提使用postgis 数据库支持关联 join 支持 in,not in,like,及其他sql原生函数 新增sql图层 编写自定义sql 编辑sql语句必须输出带有geom数据 正则表达式去除 设置id以及坐标参考系 预览sql图层效果 拼接sql参数 http://xxx.com/geoserver/weather/wms?SERVICEWMS&VERSI…...
从 Router 到 Navigation:HarmonyOS 路由框架的全面升级与迁移指南
在本教程中,我们深入探讨了 Router 和 Navigation 在 HarmonyOS 中的用法差异及如何从 Router 切换到 Navigation 的方法。重点涵盖了页面跳转、转场动画、生命周期管理以及跨包路由的实现。 页面结构对比 Router 页面结构 每个页面需要使用 Entry 注解。 页面需要…...
http1.1 vs http2.0 速度对比实测
首先对比一下http1.1 vs http2.0 区别: 1. 连接管理: HTTP/1.1: 每个请求/响应都需要一个独立的 TCP 连接,虽然可以使用持久连接(keep-alive)来复用连接,但仍然存在请求队头阻塞(Head-of-Line…...
uniappp配置导航栏自定义按钮(解决首次加载图标失败问题)
1.引入iconfont的图标,只保留这两个文件 2.App.vue引入到全局中 import "./static/fonts/iconfont.css"3.pages.json中配置text为图标对应的unicode {"path": "pages/invite/invite","style": {"h5": {"…...
vue运行项目时local有显示 但是network却显示unavailable
问题描述 日常开发中 和后端本地调试时 后端需要使用你的本地去访问页面 可运行项目时会出现network显示unavailable的情况 解决方式 1.其实这只是vue脚手架对于ip地址获取的方式兼容上有一些问题 但其实是不影响ip访问本地的 你可以直接cmd内ipconfig去查看自己的ip然后…...
【Java学习笔记】JUnit
一、为什么需要 JUnit 二、基本介绍 三、实现方法 第一次添加: 在需要测试的方法处输入 Test注解,快捷键AltInsert选择添加版本(常用JUnit5.4) 出现绿色箭头可进行测试和编译...
Next.js配置教程:构建自定义服务器
更多有关Next.js教程,请查阅: 【目录】Next.js 独立开发系列教程-CSDN博客 目录 前言 1. 什么是自定义服务器? 2. 配置自定义服务器 2.1 基础配置 2.2 集成不同的服务器框架 使用Fastify 使用Koa 3. 自定义服务器的高级功能 3.1 路…...
el-table 动态计算合并行
原始表格及代码 <el-table:data"tableData"class"myTable"header-row-class-name"tableHead" ><el-table-column prop"date" label"日期"> </el-table-column><el-table-column prop"name" …...
【杭州电商商城系统开发建设】
杭州电商商城系统开发建设是一项综合性的工程,它涉及到多个方面的内容。以下是对杭州电商商城系统开发建设的详细分析: 需求分析:深入了解用户需求,包括用户群体特征、购物习惯、支付偏好等,为系统设计提供基础。明确…...
架构实践05-互联网架构模板
零、文章目录 架构实践05-互联网架构模板 1、技术演进的方向 (1)技术演进的方向判断 潮流派:热衷于新技术,紧跟技术潮流,但可能面临技术不成熟的风险和学习成本。保守派:强调稳定,对新技术持…...
家校通小程序实战教程10部门管理前后端连接
目录 1 加载后端的数据2 为什么不直接给变量赋值3 保存部门信息4 最终的效果5 总结 现在部门管理已经完成了后端功能和前端开发,就需要在前端调用后端的数据完成界面的展示,而且在录入部门信息后需要提交到数据库里,本篇我们介绍一下前后端如…...
【前端面试题】书、定位问题、困难
看过什么书 《JavaScript 高级程序设计(第 4 版)》(作者:Matt Frisbie) 这是一本深入学习 JavaScript 语言的经典书籍。它详细地涵盖了 JavaScript 的高级特性,包括原型链、闭包、异步编程等复杂概念。以闭…...
VSCode设置字体
参考文章:【面向小白】vscode最佳实践(2)—— 字体设置(fira code更纱黑体),这篇文章末尾给了安装字体的链接。 配置的字体还是很好看的。 ‘Fira Code Retina’, ‘Sarasa Mono Sc’ 需要注意的一个点&am…...
《机器学习》2.4假设检验 t分布 F分布
目录 t发布 注意是这个东西服从t分布 数据服从t分布通常是在以下情况下: 以下是一些具体的例子,说明在何种情况下数据会服从t分布: t检验 交叉验证t检验 样本方差编辑 F分布(fisher Friedman检验是一种非参数统计方法&a…...
Mysql之视图
MySQL 视图(View) 1. 概念 视图是一个虚拟的表,它是基于 SELECT 查询的结果集。视图不存储实际数据,而是动态地从基表中提取数据。视图可以简化复杂查询、提高数据安全性(限制访问特定列或行)以及提供数据…...
kafka学习笔记
kafka消息中间件精讲 - B站动力节点 JDK17在Windows安装及环境变量配置超详细的教程 Windows 多版本java 装多个版本jdk Windows同时安装多个JDK jdk17下载与安装教程(win10),超详细 jdk17-archive-downloads 如何在IDEA中配置指定JDK版…...
【保姆级教程】基于OpenCV+Python的人脸识别上课签到系统
【保姆级教程】基于OpenCVPython的人脸识别上课签到系统 一、软件安装及环境配置1. 安装IDE:PyCharm2. 搭建Python的环境3. 新建项目、安装插件、库 二、源文件编写1. 采集人脸.py2. 训练模型.py3. 生成表格.py4. 识别签到.py5. 创建图形界面.py 三、相关函数分析1.…...
LVS能否实现两台服务器的负载均衡
LVS能否实现两台服务器的负载均衡 是的,LVS(Linux Virtual Server)可以实现两台服务器的负载均衡,并且它非常适合这种场景。 LVS(Linux Virtual Server)简介: LVS 是一种基于 Linux 的负载均…...
智能人体安全防护:3D 视觉技术原理、系统架构与代码实现剖析
随着工业化程度的提高,生产安全已成为企业关注的重点。尤其是在一些存在禁区的工业厂区和车间,人员误入或违规进入将带来严重的安全隐患。为了解决这一问题,迈尔微视推出了智能人体安全检测解决方案,为企业提供全方位的人员安全监…...
JAVA后端实现全国区县下拉选择--树形结构
设计图如图: 直接上代码 数据库中的格式: JAVA实体类: Data public class SysAreaZoningDO {private Long districtId;private Long parentId;private String districtName;private List<SysAreaZoningDO> children; } MapperSQL语句…...
DVWA及其他常见网络靶场
常见网络靶场 Metasploitable2 介绍: Metasploitable2 是一个用于安全培训和测试渗透测试工具的虚拟靶机。它故意配置了许多已知的安全漏洞,涵盖了操作系统、网络服务等多个方面。基于 Ubuntu Linux 操作系统构建,包含了如 Apache、MySQL、FT…...
API接口安全:电商数据保护的坚固防线
随着电子商务的蓬勃发展,电商平台的数据安全和隐私保护成为了至关重要的议题。API(应用程序编程接口)作为电商平台与外部系统交互的桥梁,其安全性直接关系到整个平台的数据保护能力。本文将从API接口安全的重要性、面临的安全威胁…...
springboot437校园悬赏任务平台(论文+源码)_kaic
摘 要 使用旧方法对校园悬赏任务平台的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在校园悬赏任务平台的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的校…...
可视化报表如何制作?一文详解如何用报表工具开发可视化报表
在如今这个数据驱动的商业时代,众多企业正如火如荼地推进数字化转型,力求在激烈的市场竞争中占据先机。然而,随着业务规模的扩大和运营复杂度的提升,企业的数据量爆炸式增长,传统报表格式单一、信息呈现密集且不易解读…...
STM32 HAL库之SDIO例程 Micro SD卡 - 2
1、硬件图 2、示例代码 根据提示配置SDCLK为72/3 24MHz。 static void MX_SDIO_SD_Init(void) {/* USER CODE BEGIN SDIO_Init 0 */SD_InitTypeDef Init;Init.ClockEdge SDIO_CLOCK_EDGE_RISING;Init.ClockBypass SDIO_CLOCK_BYPASS_DISABLE;Init.ClockPo…...
架构实践02-高性能架构模式
零、文章目录 架构实践02-高性能架构模式 1、 高性能数据库集群:读写分离 (1)引言 背景:随着业务的发展和数据的增长,单个数据库服务器难以满足需求,必须考虑数据库集群。目的:介绍高性能数…...
leetcode-73.矩阵置零-day5
class Solution {public void setZeroes(int[][] mat) {int m mat.length, n mat[0].length;// 1. 扫描「首行」和「首列」记录「首行」和「首列」是否该被置零boolean r0 false, c0 false;for (int i 0; i < m; i) {if (mat[i][0] 0) {r0 true;break;}}for (int j …...
Docker与虚拟机:虚拟化技术的差异解析
在信息技术飞速发展的今天,虚拟化技术已成为现代IT架构不可或缺的一部分。而虚拟化从技术层面划分则分为以下几种: 完全虚拟化:虚拟机能够完全模拟底层硬件的特权指令的执行过程,客户操作系统无须进行修改。 硬件辅助虚拟化&#…...