当前位置: 首页 > wzjs >正文

如何让做的网站自动适应浏览器青岛网站优化排名

如何让做的网站自动适应浏览器,青岛网站优化排名,网站备案归,陕西营销型网站制作非对称加密算法(Asymmetric Encryption)使用公钥加密、私钥解密,解决了对称加密的密钥分发问题。本文将详细介绍 RSA、ECC、ElGamal、DSA、ECDSA、Ed25519 等非对称加密算法的原理,并提供Python实现代码及安全性分析。 1. 非对称加…

非对称加密算法(Asymmetric Encryption)使用公钥加密、私钥解密,解决了对称加密的密钥分发问题。本文将详细介绍 RSA、ECC、ElGamal、DSA、ECDSA、Ed25519 等非对称加密算法的原理,并提供Python实现代码及安全性分析。


1. 非对称加密概述

1.1 非对称加密的基本原理

  • 公钥(Public Key):用于加密或验证签名,可公开。
  • 私钥(Private Key):用于解密或生成签名,必须保密。
  • 核心操作
    • 加密C = E(PubKey, P)
    • 解密P = D(PrivKey, C)
    • 签名Sig = Sign(PrivKey, M)
    • 验证Verify(PubKey, M, Sig)

1.2 非对称加密的分类

类型特点典型算法
基于大数分解依赖大素数分解难题RSA
基于离散对数依赖有限域离散对数难题ElGamal、DSA
基于椭圆曲线更短的密钥,更高的安全性ECC、ECDSA、Ed25519

1.3 非对称加密的应用

  • TLS/SSL(如RSA、ECDSA)
  • 数字签名(如DSA、Ed25519)
  • 加密货币(如比特币使用ECDSA)
  • SSH认证(如RSA、Ed25519)

2. RSA(Rivest-Shamir-Adleman)

2.1 算法原理

  • 密钥生成
    1. 选择两个大素数 pq
    2. 计算 n = p * qφ(n) = (p-1)(q-1)
    3. 选择 e 使得 1 < e < φ(n)gcd(e, φ(n)) = 1
    4. 计算 d 使得 d * e ≡ 1 mod φ(n)
  • 公钥(e, n)
  • 私钥(d, n)

2.2 Python实现

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import binascii# 生成RSA密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()print("私钥:", private_key.decode())
print("公钥:", public_key.decode())# 加密
message = b"Hello, RSA!"
cipher = PKCS1_OAEP.new(RSA.import_key(public_key))
encrypted = cipher.encrypt(message)
print("RSA加密:", binascii.hexlify(encrypted))# 解密
cipher = PKCS1_OAEP.new(RSA.import_key(private_key))
decrypted = cipher.decrypt(encrypted)
print("RSA解密:", decrypted.decode())

输出示例

私钥: -----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAr3...
-----END RSA PRIVATE KEY-----
公钥: -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG...
-----END PUBLIC KEY-----
RSA加密: b'4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d...'
RSA解密: Hello, RSA!

2.3 安全性分析

  • 推荐密钥长度:≥2048位(3072位更安全)
  • 攻击方式
    • 大数分解(量子计算机威胁)
    • 旁路攻击(如时序攻击)

3. ECC(Elliptic Curve Cryptography)

3.1 算法原理

  • 基于椭圆曲线离散对数问题(ECDLP)
  • 曲线方程y² = x³ + ax + b
  • 优势
    • 更短的密钥(256位ECC ≈ 3072位RSA)
    • 更快的计算速度

3.2 Python实现(ECDH密钥交换)

from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serialization# 生成ECC密钥对
private_key = ec.generate_private_key(ec.SECP256R1())
public_key = private_key.public_key()# 序列化密钥
private_pem = private_key.private_bytes(encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.PKCS8,encryption_algorithm=serialization.NoEncryption()
)
public_pem = public_key.public_bytes(encoding=serialization.Encoding.PEM,format=serialization.PublicFormat.SubjectPublicKeyInfo
)print("私钥:", private_pem.decode())
print("公钥:", public_pem.decode())

输出示例

私钥: -----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgK2X7sQ...
-----END PRIVATE KEY-----
公钥: -----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkE9cX7QZ...
-----END PUBLIC KEY-----

3.3 安全性分析

  • 推荐曲线:NIST P-256(secp256r1)、Curve25519
  • 量子威胁:需迁移到后量子密码(如格密码)

4. ElGamal加密

4.1 算法原理

  • 基于离散对数问题
  • 密钥生成
    1. 选择大素数 p 和生成元 g
    2. 选择私钥 x,计算公钥 y = g^x mod p

4.2 Python实现

from Crypto.PublicKey import ElGamal
from Crypto import Random
import binascii# 生成ElGamal密钥对
key = ElGamal.generate(2048, Random.new().read)
public_key = key.publickey()
private_key = key# 加密
message = b"Hello, ElGamal!"
k = Random.new().read(16)
c1, c2 = public_key.encrypt(message, k)
print("ElGamal加密:", (binascii.hexlify(c1), binascii.hexlify(c2)))# 解密
decrypted = private_key.decrypt((c1, c2))
print("ElGamal解密:", decrypted.decode())

4.3 安全性分析

  • 主要用于混合加密(如PGP)
  • 已被ECC替代

5. DSA(Digital Signature Algorithm)

5.1 算法原理

  • 基于离散对数
  • 仅用于签名(不可加密)

5.2 Python实现

from Crypto.PublicKey import DSA
from Crypto.Signature import DSS
from Crypto.Hash import SHA256# 生成DSA密钥对
key = DSA.generate(2048)
private_key = key
public_key = key.publickey()# 签名
message = b"Hello, DSA!"
hash_obj = SHA256.new(message)
signer = DSS.new(private_key, 'fips-186-3')
signature = signer.sign(hash_obj)
print("DSA签名:", binascii.hexlify(signature))# 验证
verifier = DSS.new(public_key, 'fips-186-3')
try:verifier.verify(hash_obj, signature)print("DSA验证成功!")
except ValueError:print("DSA验证失败!")

5.3 安全性分析

  • 已被ECDSA替代

6. ECDSA(Elliptic Curve DSA)

6.1 Python实现

from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import utilsprivate_key = ec.generate_private_key(ec.SECP256R1())
public_key = private_key.public_key()# 签名
message = b"Hello, ECDSA!"
signature = private_key.sign(message,ec.ECDSA(hashes.SHA256())
)# 验证
try:public_key.verify(signature,message,ec.ECDSA(hashes.SHA256()))print("ECDSA验证成功!")
except:print("ECDSA验证失败!")

6.2 安全性分析

  • 比特币、TLS 1.3常用

7. Ed25519(EdDSA)

7.1 Python实现

from cryptography.hazmat.primitives.asymmetric import ed25519private_key = ed25519.Ed25519PrivateKey.generate()
public_key = private_key.public_key()# 签名
message = b"Hello, Ed25519!"
signature = private_key.sign(message)# 验证
try:public_key.verify(signature, message)print("Ed25519验证成功!")
except:print("Ed25519验证失败!")

7.2 安全性分析

  • SSH、加密货币首选

8. 总结

算法密钥长度用途安全性Python库
RSA≥2048位加密/签名大数分解威胁Crypto.PublicKey.RSA
ECC256位加密/签名当前最安全cryptography
ElGamal≥2048位加密被ECC替代Crypto.PublicKey.ElGamal
DSA≥2048位签名被ECDSA替代Crypto.PublicKey.DSA
ECDSA256位签名比特币标准cryptography
Ed25519256位签名现代最佳cryptography

推荐选择

  • 加密:RSA(兼容性)、ECC(性能)
  • 签名:Ed25519(最快最安全)

9. 完整代码库

本文代码基于:

  • PyCryptodome(RSA/DSA/ElGamal)
  • cryptography(ECC/ECDSA/Ed25519)

安装:

pip install pycryptodome cryptography
http://www.dtcms.com/wzjs/789477.html

相关文章:

  • 图片在线设计网站网页制作教程好看视频
  • 天津葛沽 网站建设公司昆明君创网络科技有限公司
  • 办公室设计效果图大全苏州优化网站
  • 青岛专业建设网站wordpress教育网站
  • 门户网站 开发注意鞋帽网站欣赏
  • 怎么提高网站曝光公司的网 网站打不开
  • js实现网站简体转繁体中英文网站为什么要分开做
  • 四川平台网站建设方案蚌埠网络推广
  • 网站开发教程图文angular2做的网站有
  • 网站建设研究方法大人和孩做爰网站
  • 网站与客户端的区别企业采购平台排名
  • 网站怎么能快速备案企业公示网
  • 海南网站建设哪里好wordpress5.0.2运行慢
  • 网站建设流程步骤怎么样临沂河东区建设局网站
  • wordpress 主题 名站互动平台游戏
  • 做盗版小说网站怎么样购物网站建设详细教程
  • 红河北京网站建设把excel做数据库分享成网站
  • 帝国cms 网站地图 xml网页制作代码html制作一个网页
  • dw制作旅游网站教程重庆在线开放平台
  • 帮开设赌场的网站做美工企业网站建设推广费用
  • 花都建站如何做企业文化方案
  • 2003建网站广州免费律师咨询
  • 网站网络推广方案辽宁建设工程信息网项目经理变更
  • 网站后缀有什么区别网站的开发环境设计
  • 无网站营销网站建设规划书模板
  • 服务器做视频网站网站建设公司对比
  • 网站建站卖首饰侵权商城网站怎么做
  • 哪些行业做网站的多网站建设外包公司招聘
  • 国外做电子元器件在哪个网站页面设计时最好用多少种颜色
  • 网站建设朋友圈最新网页传奇