码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • RSA与AES加密


    目录

    一、非对称加密和RSA

    1.非对称秘钥

    2.RSA加密的核心

     3.Python中实现RSA加密解密

    二、HTTPS通信过程

     三、对称加密和AES

    1.AES简介

     2.Python中实现AES加解密


    一、非对称加密和RSA

    1.非对称秘钥

     

    https://blog.csdn.net/gao131360144/article/details/79966094
    

    HTTPS:SSH、数字指纹、数字签名SHA、RSA非对称加密、AES对称加密

    2.RSA加密的核心

    https://blog.csdn.net/qq_45616828/article/details/127702311

     3.Python中实现RSA加密解密

     

    1. import rsa
    2. from binascii import b2a_hex, a2b_hex
    3. # 第一步:生成RSA公钥和私钥
    4. # pub, priv = rsa.newkeys(256)
    5. pub, priv = rsa.newkeys(2048)
    6. print(pub, priv)
    7. # 第二步:公钥加密
    8. encrypt = rsa.encrypt('Hello-蜗牛'.encode(), pub)
    9. print(encrypt)
    10. encstr = b2a_hex(encrypt).decode()
    11. print(encstr)
    12. # 第三步:私钥解密
    13. # decrypt = rsa.decrypt(encrypt, priv)
    14. decrypt = rsa.decrypt(a2b_hex(encstr), priv)
    15. print(decrypt.decode())

    二、HTTPS通信过程

     三、对称加密和AES

    1.AES简介

     2.Python中实现AES加解密

    加密过程

    1. from Crypto.Cipher import AES
    2. from binascii import b2a_hex, a2b_hex
    3. # 加密过程
    4. source = 'Hello-蜗牛难道不是吗也许'
    5. # 如果source分组后剩余长度不足16位的倍数就用空格补足为16位
    6. if len(source.encode('utf-8')) % 16:
    7. add = 16 - (len(source.encode('utf-8')) % 16)
    8. else:
    9. add = 0
    10. source = source + ('\0' * add)
    11. print(source)
    12. # 定义密钥和偏移量,必须是16个字节、24字节或32字节
    13. # key = 'todayiswonderful-1234567'.encode()
    14. key = 'todayiswonderful-FEDCBA987654321'.encode()
    15. mode = AES.MODE_CBC
    16. iv = b'1234567890ABCDEF'
    17. cryptos = AES.new(key, mode, iv)
    18. cipher = cryptos.encrypt(source.encode())
    19. print(cipher)
    20. print(b2a_hex(cipher).decode())

    解密过程

     

    1. from Crypto.Cipher import AES
    2. from binascii import b2a_hex, a2b_hex
    3. # 解密
    4. source = 'f0c0ba97df33f91fdbfacd99c38838f347831e7e3a1f893f6752cdd080fc1c83cb300c0b7e117d587d7e5a69dbb70aee'
    5. key = 'todayiswonderful-FEDCBA987654321'.encode()
    6. mode = AES.MODE_CBC
    7. iv = b'1234567890ABCDEF'
    8. cryptos = AES.new(key, mode, iv)
    9. dest = cryptos.decrypt(a2b_hex(source))
    10. print(dest.decode().rstrip('\0'))

     

     

  • 相关阅读:
    Oracle字符集修改
    MySQL索引失效原理是什么?
    荧光定量PCR的优点和检测方法盘点
    年薪20w+,做测试的第4年,从手工测试到自动化测试每一步都是艰难的~
    字节跳动基于ClickHouse优化实践之“多表关联查询”
    冯喜运:6.5黄金原油今日行情趋势分析及操作策略
    React18入门(第二篇)——React18+Ts项目配置husky、eslint、pretttier、commitLint
    windows编程-线程
    StyleGAN的发展史
    沃通CA证书支持多所高校招投标文件电子签名
  • 原文地址:https://blog.csdn.net/qq_45616828/article/details/127702263
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号