理解经典加密算法

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
函数计算FC,每月15万CU 3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【6月更文挑战第22天】本文介绍加密与安全哈希典型算法,包括对称加密或非对称加密,以及python实现的例子。

1 术语

同义词

            安全哈希  一般指的是 安全哈希

            消息摘要  一般指的 较旧的算法

术语:安全哈希(如SHA-256)与消息摘要(如较旧的SHA算法)

  • 对称加密:使用相同密钥加密和解密,如DES
  • 非对称加密:RSA算法,基于大质数乘积,公钥和私钥分开
  • 公钥/私钥转换:Base64编码与解码
  • 数字签名:EdDSA提供快速且安全的签名,Curve25519用于ECDH协议
  • Python3:ssl模块处理随机数和证书验证,hashlib支持多种哈希算法,base64和zlib涉及编码和较旧哈希

    Toroid托瑞德符号.png

2 对称加密

对称密钥算法(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥.

安全散列,信息摘要

    SHA-256
    SHA

3 非对称加密

  • RSA

              非对称加密算法的一种
              随意选择两个大的质数p和q,p不等于q,计算N=pq。
              根据欧拉函数,不大于N且与N互质的整数個数為(p-1)(q-1)。
              选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)。
              用以下这个公式计算d:d× e ≡ 1 (mod (p-1)(q-1))。 (d*e)%((p-1)(q-1))=1
              将p和q的记录销毁。
              以上内容中,(N,e)是公钥,(N,d)是私钥。
    
  • 公钥对象转为String

     byte[] keyByte=(Key)publicKey.getEncoded();
     String key=Base64.getEncoder().encodeToString(keyByte); 
    
  • String 转公钥对象

     byte[] keyBytes = Base64.getDecoder().decode(key);   //衔接 先转换byte[]
     X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);        
     KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); //RSA算法      
     Key publicK = keyFactory.generatePublic(x509KeySpec);  
    
  • 私钥转String

      byte[] keyByte=(Key)privateKey.getEncoded();
      String key=Base64.getEncoder().encodeToString(keyByte); 
    
  • String转私钥

      byte[] keyBytes = Base64.getDecoder().decode(key); //先转换byte[]
      PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);        
      KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);        
      Key privateK = keyFactory.generatePrivate(pkcs8KeySpec); 
    

4 数字签名算法 EdDSA

在公钥密码学中,爱德华兹曲线数字签名算法( EdDSA ) 是一种数字签名方案,它使用基于扭曲的爱德华兹曲线的Schnorr 签名的变体。

它旨在比现有的数字签名方案更快,同时又不牺牲安全性。它由Daniel J. Bernstein、Niels Duif、Tanja Lange、Peter Schwabe 和 Bo-Yin Yang 等团队开发。
参考实现是公共域软件。

  • Curve25519

    在密码学中,Curve25519是椭圆曲线密码学(ECC)中使用的椭圆曲线,提供 128位安全性(256 位密钥大小),设计用于椭圆曲线 Diffie–Hellman (ECDH) 密钥协议方案。它是 ECC 中最快的曲线之一,并且未被任何已知专利所涵盖 。

最初的 Curve25519 论文将其定义为Diffie–Hellman (DH) 函数。Daniel J. Bernstein此后提议将名称 Curve25519 用于基础曲线,将名称X25519用于 DH 函数。

最后两个在端到端通信中,经常看到。

5 python3 的实现

  • ssl

随机数处理

    ssl.RAND_bytes(num)

返回 num 个高加密强度伪随机字节数据 RAND_status() 可被用来检查 PRNG 的状态而 RAND_add() 可被用来为 PRNG 设置随机种子。

  • 证书处理

        ssl.match_hostname(cert, hostname)
    

验证 cert (使用 SSLSocket.getpeercert() 所返回的已解码格式) 是否匹配给定的 hostname。

所应用的规则是在 RFC 2818, RFC 5280 和 RFC 6125 中描述的检查 HTTPS 服务器身份的规则。

除了 HTTPS,此函数还应当适用于各种基于 SSL 协议的服务器身份检查操作,例如 FTPS, IMAPS, POPS 等等.

大部分平台 可用的hash算法

           sha3_224(), sha3_256(), sha3_384(), sha3_512(), shake_128(), shake_256()

以字节表示的结果哈希对象的大小。

      hash.digest_size

以字节表示的哈希算法的内部块大小。

    hash.block_size
  • base64

将二进制数据编码为可打印的 ASCII 字符,以及将这种编码格式解码回二进制数据的函数.

  • zlib

较旧的哈希算法 库

    crc32
    adler32

6 小结

参考实现:

https://en.wikipedia.org/wiki/Public_domain_software

目录
相关文章
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
4010 0
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
477 2
事件驱动作为分布式异步服务架构
|
10月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
1089 1
|
10月前
|
网络协议 Linux
通用网卡配置文件配置网络
本文介绍了在RHEL 7系统中配置网络的方法。首先,通过编辑位于`/etc/sysconfig/network-scripts`目录下的网卡配置文件(例如`ifcfg-ens33`),设置静态IP地址、子网掩码、网关和DNS等参数。接着,使用`systemctl`命令重启网络服务,确保配置生效。此外,还介绍了使用`nmtui`图形界面工具进行网络配置的步骤,包括修改IP地址、保存配置和重启网络。最后,通过`ip addr`或`ifconfig`命令验证配置是否成功。
519 2
|
10月前
|
监控 负载均衡 Java
微服务架构下的服务治理与监控
微服务架构下的服务治理与监控
547 0
|
存储 人工智能 安全
保障隐私的Elasticsearch AI搜索解决方案
【8月更文第28天】随着大数据和人工智能技术的发展,搜索引擎在日常生活中扮演着越来越重要的角色。然而,用户隐私保护成为了一个不容忽视的问题。本文将探讨如何在确保用户数据隐私的同时,利用Elasticsearch实现智能搜索功能。我们将介绍一种综合方案,该方案结合了加密技术、差分隐私、匿名化处理以及安全多方计算等方法,以保障用户数据的安全性
768 0
|
监控 供应链 数据挖掘
ERP系统中的成本控制与降低成本策略解析
【7月更文挑战第25天】 ERP系统中的成本控制与降低成本策略解析
1102 3
|
存储 算法 大数据
【大数据】亿级数据中判断一个数是否存在
【大数据】亿级数据中判断一个数是否存在
336 0
【大数据】亿级数据中判断一个数是否存在
|
Java 应用服务中间件 Apache
An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed
An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed
An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed
|
存储 供应链
解读ROI:ERP系统的成本与投资回报分析
解读ROI:ERP系统的成本与投资回报分析
1429 4