python进件 — 密码学

这篇具有很好参考价值的文章主要介绍了python进件 — 密码学。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、密码学介绍

密码学是研究和应用如何保护信息的一门学科。它涉及使用加密技术来确保数据的保密性、完整性和可用性。密码学的目标是设计和分析安全的算法和协议,以保护通信、存储和计算过程中的敏感数据。

密码学可以分为两个主要领域:对称密码和非对称密码。

1. 对称密码(又称为共享密钥密码):在对称密码中,使用相同的密钥进行加密和解密操作。发送方使用密钥对数据进行加密,接收方使用相同的密钥对数据进行解密。对称密码算法通常被称为块密码(如AES)或流密码(如RC4)。

2. 非对称密码(又称为公钥密码):在非对称密码中,使用一对相关联的密钥,即公钥和私钥。发送方使用接收方的公钥对数据进行加密,接收方则使用其私钥对数据进行解密。非对称密码算法通常用于实现数据的机密性和身份验证,最著名的非对称密码算法是RSA和椭圆曲线密码学(ECC)。

密码学还涉及到其他概念和技术,例如哈希函数(用于生成固定长度的散列值)、消息认证码(用于验证消息完整性)和数字签名(用于验证消息来源和完整性)等。

密码学的目标是保护数据的机密性(防止非授权方访问)、完整性(防止数据被篡改)和可用性(确保合法用户可以访问数据)。密码学在信息安全、电子商务、云计算、区块链和许多其他领域都发挥着重要的作用。

2、秘钥

2.1 公私钥

公钥和私钥是非对称加密算法中使用的密钥对,也被称为公私钥对(Public-Key Cryptography)。

公钥(Public Key)是可以公开给其他人使用的密钥。公钥用于加密数据,也可以用来验证签名。它是由非对称加密算法的加密方生成,并且可以自由地在公共通信渠道上传播。由于公钥在加密过程中只用于加密数据或验证签名,不参与解密或生成签名的过程,因此可以放心地公开使用。

私钥(Private Key)是与公钥配对使用的秘密密钥,只由私钥的持有者知道,并且必须严格保密。私钥用于解密数据和生成签名。只有拥有私钥的人才能够解密使用公钥加密的数据,或者使用私钥对数据进行签名。

2.2 秘钥格式

PKCS#1格式(Public-Key Cryptography Standards #1):  

公钥以 `-----BEGIN RSA PUBLIC KEY-----` 开头,以 `-----END RSA PUBLIC KEY-----` 结尾。  
私钥以 `-----BEGIN RSA PRIVATE KEY-----` 开头,以 `-----END RSA PRIVATE KEY-----` 结尾。  

PKCS#8格式(Public-Key Cryptography Standards #8):  

公钥以 `-----BEGIN PUBLIC KEY-----` 开头,以 `-----END PUBLIC KEY-----` 结尾。  
私钥以 `-----BEGIN PRIVATE KEY-----` 开头,以 `-----END PRIVATE KEY-----` 结尾。  

PKCS#8格式相对更加通用,适用于不同的非对称加密算法和扩展属性的存储;而PKCS#1格式主要用于RSA算法的公私钥存储,没有统一的格式同时存储公钥和私钥。

2.3 保存秘钥的文件格式

PEM格式(Privacy Enhanced Mail):PEM格式是一种基于文本的格式,通常使用扩展名为.pem。在PEM格式中,密钥以Base64编码的形式存储,并使用特定的头部和尾部标记来标识密钥类型。例如,公钥以"-----BEGIN PUBLIC KEY-----"开始,以"-----END PUBLIC KEY-----"结束,私钥以"-----BEGIN PRIVATE KEY-----"开始,以"-----END PRIVATE KEY-----"结束。PEM格式的密钥可以直接在文本文件中存储,并且易于读取和传输。

DER格式(Distinguished Encoding Rules):DER格式是一种二进制格式,通常使用扩展名为.der。在DER格式中,密钥以ASN.1(Abstract Syntax Notation One)结构编码。DER格式的密钥相对于PEM格式更紧凑,适用于网络传输和存储。DER格式的密钥无法直接在文本文件中阅读,因为它是以二进制形式存储的。

3、数字签名和认证

数字签名是一种用于验证数据完整性、身份认证和防止抵赖的技术。它基于非对称加密算法和哈希算法的组合实现。

发送方数字签名的过程如下:
1. 发送方使用哈希算法对原始数据进行摘要处理,生成一个固定长度的哈希值。
2. 发送方使用自己的私钥对摘要进行加密,生成数字签名。
3. 发送方将数字签名与原始数据一起发送给接收方。

接收方验证数字签名的过程如下:
1. 接收方使用发送方的公钥对数字签名进行解密,得到摘要。
2. 接收方使用相同的哈希算法处理接收到的原始数据,生成一个新的哈希值。
3. 接收方比较解密得到的摘要和新生成的哈希值,如果一致,说明数据完整性未被篡改。

数字签名的原理在于,只有拥有私钥的发送方才能生成有效的数字签名,而任何人都可以使用公钥验证签名的有效性。这样可以确保数据的完整性,并且可以防止发送方抵赖已发送的数据。

常见的数字签名算法包括RSA和DSA。此外,数字证书和证书颁发机构(CA)也在数字签名中发挥重要作用,用于验证公钥的真实性和可信度。数字签名在电子商务、信息安全和数字文档传输等领域得到广泛应用。

4、加密算法

加密算法是一种数学算法,用于将原始数据转换为不可读的密文,以保护数据的机密性和安全性。以下是几种常见的加密算法:

1. 对称加密算法:对称加密算法使用相同的密钥进行加密和解密。常见的对称加密算法有:
   - AES(Advanced Encryption Standard):是一种高级加密标准,广泛应用于各种安全应用中。
   - DES(Data Encryption Standard):是一种数据加密标准,已被AES所取代,但仍在某些应用中使用。
   - 3DES(Triple Data Encryption Algorithm):是DES的改进算法,通过对数据进行多次DES加密来增强安全性。

2. 非对称加密算法:非对称加密算法使用一对密钥,分别是公钥和私钥,用于加密和解密数据。常见的非对称加密算法有:
   - RSA(Rivest-Shamir-Adleman):是一种基于大素数因子化的非对称加密算法,广泛应用于数字签名、密钥交换和加密等领域。
   - ECC(Elliptic Curve Cryptography):是一种基于椭圆曲线数学问题的非对称加密算法,具有较短的密钥长度和高级别的安全性。

3. 哈希算法:哈希算法将任意长度的数据映射为固定长度的哈希值,常用于验证完整性和生成数字签名。常见的哈希算法有:
   - MD5(Message Digest Algorithm 5):生成128位哈希值,但由于其安全性受到一些限制,已不再推荐使用。
   - SHA(Secure Hash Algorithm)家族:包括SHA-1、SHA-256、SHA-3等,生成不同长度的哈希值,被广泛用于数据完整性校验和数字签名等领域。

5、RSA加密算法

RSA(Rivest-Shamir-Adleman)算法是一种非对称加密算法,也是最著名和广泛应用的公钥加密算法之一。它由Ron Rivest、Adi Shamir和Leonard Adleman三位密码学家于1977年提出。

RSA算法的基本原理是利用大素数因子分解问题,它使用一对相关的密钥:公钥和私钥。

RSA算法的加密过程如下:
1. 首先,选择两个不相等的大素数p和q,并计算它们的乘积n=p*q。
2. 计算与n互质的正整数e,作为加密密钥的一部分,称为公钥(n, e)。
3. 计算e的模反元素d,使得(e * d) mod ((p-1) * (q-1)) = 1,作为解密密钥的一部分,称为私钥(n, d)。
4. 加密时,将消息M转换为整数m,满足0 <= m < n。
5. 加密运算:密文C = m^e mod n,其中^表示幂运算,mod表示求余运算。
6. 将密文C发送给接收方。

解密过程如下:
1. 接收到密文C后,用私钥(n, d)进行解密运算:明文M = C^d mod n。
2. 将解密得到的明文M转换为原始消息。

RSA算法的安全性依赖于大整数因子分解问题的困难性,即将一个大整数分解为其素数因子的困难性。如果一个人能够快速有效地解决大整数的因子分解问题,那么整个RSA加密系统就会被破解。

RSA算法在数据加密、数字签名、密钥协商和安全通信等方面广泛应用,是公钥加密领域的重要算法之一。

6、加解密步骤

对于加解密的具体操作,一般遵循以下步骤:

1. 选择合适的加密算法:根据需求选择合适的对称密码或非对称密码算法。对称密码通常用于对称加密和解密,而非对称密码通常用于公钥加密和解密以及数字签名等操作。

2. 生成密钥:对于对称密码,生成一个共享的密钥用于加密和解密操作。对于非对称密码,生成一对相关联的公钥和私钥,分别用于加密和解密。

3. 执行加密操作:使用合适的加密算法和密钥,对明文数据进行加密。对称密码和非对称密码的加密操作略有不同,需要根据具体的算法和库进行操作。

4. 执行解密操作:使用相应的密钥,对加密后的密文进行解密,以恢复原始的明文数据。

需要注意的是,安全的加密和解密通常需要考虑更多的因素,如数据完整性验证、密码存储和密钥管理等。因此,在实际应用中,建议使用密码学库或模块提供的高级功能和最佳实践,以确保数据的安全性和完整性。

7、接口加密加签交互流程

接口加签加密,发送方和接收方交互流程如下:

1. 密钥生成:发送方和接收方各自生成一对RSA密钥,包括公钥和私钥。

2. 公钥交换:发送方将自己的公钥发送给接收方,接收方将自己的公钥发送给发送方。

3. 数据准备:发送方将要发送的数据进行准备,并将数据进行序列化,得到要发送的原始数据。

4. 数据签名:发送方使用自己的私钥对原始数据进行哈希运算,并对哈希值进行加密操作得到数字签名。

5. 数据加密:发送方使用接收方的公钥对原始数据进行加密操作,得到密文数据。

6. 组装请求:发送方将密文数据和数字签名一起组装为请求数据。

7. 请求发送:发送方将请求数据发送给接收方。

8. 请求解析:接收方接收到请求数据后,对数据进行解析,获取密文数据和数字签名。

9. 数字签名验证:接收方使用发送方的公钥对接收到的数字签名进行解密操作,得到原始的哈希值。然后对接收到的密文数据进行哈希运算,得到新的哈希值。接收方将用发送方的公钥对新的哈希值进行解密,与解密出的原始哈希值进行比对,以验证数字签名的有效性和数据的完整性和真实性。

10. 数据解密:接收方使用自己的私钥对接收到的密文数据进行解密操作,恢复成原始的明文数据。

通过以上步骤,数据在发送方进行数字签名和加密,然后在接收方进行数字签名验证和解密,以确保数据在传输过程中的机密性、完整性和真实性。同时,数字签名的验证可以验证数据的有效性,防止数据在传输过程中被篡改或伪造。

8、Python中密码学相关库

在Python中,有几个常用的密码学相关库可以用于实现加密、解密、数字签名、哈希函数等功能。以下是其中一些库的简要介绍:

1. `rsa`:这是一个专门用于RSA算法的库,提供了生成RSA密钥对、加密解密、数字签名和验证等功能。它可以用于实现非对称加密和数字签名的应用。

2. `cryptography`:这是一个功能强大的密码学库,提供了许多密码学算法和功能,包括对称密码、非对称密码、哈希函数、消息认证码、随机数生成等。它使用了现代密码学的最佳实践,通过高级API和易于使用的接口,使进行密码学操作变得简单和安全。

3. `hashlib`:这是Python标准库中的一个模块,提供了常见的哈希函数的实现,如MD5、SHA-1、SHA-256等。它可以用于计算散列值,进行数据完整性验证、密码存储等操作。

这些库都拥有丰富的功能和广泛的使用,并具有成熟的社区支持。根据具体的需求和项目要求,选择适合的密码学库可以帮助简化开发过程并提高安全性。


reference:

RSA密钥详解 - 知乎文章来源地址https://www.toymoban.com/news/detail-672747.html

到了这里,关于python进件 — 密码学的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 密码学—Vigenere加密Python程序

    古典密码,属于多表加密。 怎么就是多表了? 维吉尼亚密码的加密算法实质是凯撒密码,因为他是先分好小组,然后用密钥串对应着分好组的每一个字母进行加密(因为一个凯撒表用密钥串的一个字母加密),当然是遵循下标相同的,比如秘钥为:abc,明文为qwer,然后明文

    2024年02月11日
    浏览(48)
  • python库-密码学库pynacl

    官方: https://pynacl.readthedocs.io/en/latest/ PyNaCl is a Python binding to libsodium, which is a fork of the Networking and Cryptography library. These libraries have a stated goal of improving usability, security and speed. It supports Python 3.6+ as well as PyPy 3. PyNaCl 是 libsodium C库绑定封装。PyNaCl是libsodium库的Python实现。libsodi

    2023年04月09日
    浏览(32)
  • DES的加密与解密(C语言实现)——大三密码学实验

    目录 DES的描述 Feistel体制 密钥扩展函数 F函数 总流程  代码 get函数的构建 yihuo函数的构建 fuck函数的构建 left_move函数的构建 exchange函数的构建 erzhuanshi函数的构建 shizhuaner函数的构建 s_box函数的构建 主函数的构建 总函数 运行结果示例 DES: 16 轮, Feistel 型结构 明文长度:

    2024年02月07日
    浏览(49)
  • 密码学之DES,3DES与Python实现AES

    最近项目中需要用到DES,3DES解密算法,所以了解一下。正好CSDN上有关于DES,3DES的资料。边看边写一下总结。 密码学之DES,3DES详解与Python实现 DES(Data Encryption Standard-数据加密标准)属于对称加密,即使用相同的密钥来完成加密和解密。分组长度为8个字节64bit(密钥每个字节的最

    2024年02月08日
    浏览(41)
  • DES的加密解密在ECB上的使用(C语言实现)——大三密码学实验

    目录 实验内容 实验原理 DES加密解密 ECB(电码本模式) 代码 DES函数的构建 RE_DES函数的构建 ECB函数的构建 RE_ECB的函数的构建 主函数的构建 总代码 测试结果 输入一个文本文件,通过ECB和DES进行加密,再将内容储存在新的文本文件中,再通过ECB和DES解密,将内容储存在新的文本

    2024年02月04日
    浏览(60)
  • 【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学

    参考:密码学发展简史 骆婷老师的《现代密码学(32H)》课程,笔记+查找的资料补充 期末为闭卷考试的形式 密码学早在公元前400多年就已经产生,人类使用密码的历史几乎与使用文字的时间一样长,密码学的发展大致可以分为 3 个阶段: 1949年之前的古典密码学阶段; 1949 年

    2024年02月04日
    浏览(51)
  • 【密码学】高级密码学-2

    🍬第⑤部分由L3H_CoLin编写,有一些修改。🍬 Song, Dawn Xiaoding, David Wagner, and Adrian Perrig. “Practical techniques for searches on encrypted data.” Proceeding 2000 IEEE Symposium on Security and Privacy. SP 2000. IEEE, 2000. 数据的安全外包存储 利用密码算法加密明文数据,使得云平台无法获得额外信息 解决

    2024年02月16日
    浏览(38)
  • 【密码学】高级密码学-1

      通信双方使用 同一个密钥 ,通过使用加密算法配合上密钥来加密,解密过程采用加密过程的逆过程配合密钥即可。   常见的对称加密算法有DES、AES等。   对称加密的缺点:不能在不安全的网络上传输密钥,一旦密钥泄露则加密通信失败。   非对称加密使用了一

    2024年02月05日
    浏览(54)
  • 【密码学-1】一文入门非对称密码学

    本文共1932字,完成阅读约需6分钟。 犹记得2021年年初的一波区块链热潮让无数人第一次了解到了“公钥”和“私钥”的概念,那么,究竟什么是公钥私钥呢?和常见的密钥又有什么区别和联系呢?本文目的在用尽可能短的时间和简洁的语言,带你快速了解非对称密码学的基本

    2023年04月08日
    浏览(87)
  • 密码学基本原理和发展——古典密码学

      目录 1 滚筒密码 2 棋盘密码 3 凯撒密码 4 单表代换与多表代换 4.1 单表代换 4.2 多表代换         密码技术最早起源于公元前404年的希腊,此后密码大致经历了 古典密码、近代密码和现代密码三个阶段。         古典密码(公元前五世纪~19世纪末)代表性的是 滚桶密

    2024年02月05日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包