信息安全第三周++

news2024/11/17 15:29:52

公钥加密算法

公钥加密算法,也被称为非对称加密算法,是现代加密技术的核心概念。与传统的对称加密算法不同,非对称加密使用一对密钥:一个公钥和一个私钥。以下是公钥加密算法的基本思想和工作原理:

  1. 密钥对:在非对称加密中,生成两个密钥。其中一个是公开的,称为公钥;另一个是保密的,称为私钥。这两个密钥是数学上相关的,但在现实情况下,从公钥计算私钥是不切实际的。

  2. 加密和解密

    • 使用公钥加密:任何人都可以使用公钥来加密信息,但只有私钥的持有者才能解密它
    • 使用私钥加密:私钥的持有者可以使用它来加密信息,然后任何人都可以使用相应的公钥来解密它。这种方法常用于数字签名,而不是加密。辨认一个消息是否是来自于某人,只要用对应的公钥试一试看能不能解密就行了。先签名,再加密。再解密,再验证签名。
  3. 数字签名:除了加密功能外,非对称加密也用于数字签名。签名是使用私钥对数据的摘要进行加密的过程。接收方可以使用公钥解密并验证签名,从而验证数据的完整性和来源。

  4. 性能:由于涉及到复杂的数学运算,公钥加密通常比对称加密要慢得多。因此,在实际应用中,常常使用公钥加密来加密对称密钥,然后使用这个对称密钥来加密实际的数据。

  5. 密钥管理:公钥加密简化了密钥管理的问题。因为公钥可以被公开,所以只需要保护私钥。而在对称加密中,加密和解密使用同一个密钥,如果需要与多人或多个组织共享,密钥管理就会变得复杂。

  6. 证书和公钥基础设施(PKI):为了验证公钥的所有者,可以使用证书。证书是由可信任的第三方机构(如证书颁发机构)签发的,证明特定的公钥确实属于声明的持有者。PKI是管理这些证书的结构和策略。

公钥加密算法的著名例子包括RSA、ElGamal和Elliptic Curve Cryptography(ECC)。这些算法都为提供安全通信、数据保护和数字签名提供了坚实的基础。

RSA概念

  • 数据库通常包含敏感数据,如用户密码、财务信息等。尽管对称加密(如AES)是数据库加密的主要方法,但公钥加密在某些场景下也很有用。
  • 比如,用户密码可以通过公钥加密存储,然后只有拥有私钥的授权实体可以访问原始密码。
  • 在客户端和数据库服务器之间建立安全连接时,SSL/TLS(使用公钥加密技术)通常用于初始的握手过程,以安全地交换对称密钥。

 

RSA的Python实践

二话不说,上代码:

import rsa

def generate_keypair(bits=2048):
    """
    生成RSA密钥对。
    """
    (public_key, private_key) = rsa.newkeys(bits)
    return private_key, public_key

def encrypt_with_public_key(public_key, plaintext):
    """
    使用公钥加密明文。
    """
    try:
        encrypted_data = rsa.encrypt(plaintext.encode(), public_key)
        return encrypted_data
    except Exception as e:
        print(f"Error encrypting message: {e}")
        return None

def decrypt_with_private_key(private_key, encrypted_data):
    """
    使用私钥解密密文。
    """
    try:
        decrypted_data = rsa.decrypt(encrypted_data, private_key).decode()
        return decrypted_data
    except Exception as e:
        print(f"Error decrypting message: {e}")
        return None

if __name__ == '__main__':
    private_key, public_key = generate_keypair()
    print("Private Key:", private_key)
    print("Public Key:", public_key)

    message = "Hello, RSA!"
    encrypted_message = encrypt_with_public_key(public_key, message)
    if encrypted_message:
        print("Encrypted:", encrypted_message)

        decrypted_message = decrypt_with_private_key(private_key, encrypted_message)
        if decrypted_message:
            print("Decrypted:", decrypted_message)

很明显,首先,生成公钥私钥,再利用公钥加密,私钥解密。其结果图如下:

Private key和Public key很长很长……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1047355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英语——谐音篇——单词——单词密码

记忆即联结,只要能建立有效的联结,就能很好地记住。在现实生活中,声音的联结模式能很好地帮助我们记忆。几乎每个学生都曾用谐音的方法记忆一些事物,但很多人都没有意识到,我们每个人都可以通过一定的练习,…

rust生命期

一、生命期是什么 生命期,又叫生存期,就是变量的有效期。 实例1 {let r;{let x 5;r &x;}println!("r: {}", r); }编译错误,原因是r所引用的值已经被释放。 上图中的绿色范围’a表示r的生命期,蓝色范围’b表示…

解决方案 | 法大大电子签赋能电力交易全流程电子化

随着电子签名技术的不断发展和完善,其在各个领域都得到了广泛的应用。尤其在电力交易场景中,电子签的应用能为电力交易带来极大的便利,带来多重价值点。与此同时,国家也出台了相应政策,全面推动各行各业的数字化转型建…

好看的货架效果(含3D效果)

搭配thymeleaf layui合成 货架一 1. css #gudinghuojia2F .layui-row { display: flex; justify-content: space-between; height: 100%;} #gudinghuojia2F .layui-col-xs10 {margin-right: 4%;} #gudinghuojia2F .layui-col-xs10:last-child {margin-right: 0;} .inner-ti…

C语言-变量与数据类型

一、基本语法 1、注释 注释(Comments)可以出现在代码中的任何位置,用来向用户提示或解释代码的含义。程序编译时,会忽略注释,不做任何处理。 C 语言有两种注释方式: (1)单行注释 …

【Verilog 教程】6.4Verilog竞争与冒险

关键字:竞争,冒险,书写规范 产生原因 数字电路中,信号传输与状态变换时都会有一定的延时。 在组合逻辑电路中,不同路径的输入信号变化传输到同一点门级电路时,在时间上有先有后,这种先后所形成…

面试题:Java8 lambda 表达式 forEach 如何提前终止?

文章目录 1.情景展示2.原因分析3.解决方案方案一:使用原始的foreach循环方式一:break方式二:return(不推荐使用) 方案二:抛出异常 1.情景展示 如上图所示,我们想要终止for循环,使用return。 执行结果如下&…

成为吃鸡战场的王者!分享顶级战术干货,助您提高战斗力!

各位吃鸡战场的玩家们,欢迎来到本视频!在这里,我将为您呈现一些与众不同的吃鸡干货,帮助您提高战斗力、轻松吃鸡! 首先,让我们谈一谈作图工具推荐。绝地求生作图工具是吃鸡玩家们的必备利器。我将给大家推荐…

python+vue电子资源管理系统

能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就需要互联网技术来方便人们的日常工作生活,实现工作办公的自动化处理,实现信息化,无纸化…

1.物联网射频识别

1.RFID概念 RFID是Radio Frequency Identification的缩写,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需与被识别物体建立机械或光学接触。 RFID(Radio Frequency Identificati…

传染病学模型 | Python实现基于SIR模型分析Covid19爆发

效果一览 文章概述 传染病学模型 | Python实现基于SIR 模型分析Covid19爆发 源码设计 import jax.numpy as npimport matplotlib.pyplot

向量数据库库Milvus Cloud2.3 运维可靠,秒级故障恢复

Milvus 2.3.0 已经发布有一段时间了,正如二选一的选择题总会让人陷入纠结一般,不少社区用户反馈对于选择 Milvus 2.2.x 还是 Milvus 2.3.x 犹豫不已。 对此,我们的回答是:强烈建议升级至 Milvus 2.3.x 版本。 为什么?在回答此问题之前,先回顾一下近一年来业界发生了哪些变…

RabbitMQ的基本介绍

什么是MQ 本质是一个队列,只不过队列中存放的信息是message罢了,还是一种跨进程的通信机制,用于上下游传递信息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦物理解耦”的消息通信服务。使用了MQ之后,信息发送…

Flutter笔记:滚动之-无限滚动与动态加载的实现

Flutter笔记 无限滚动与动态加载的实现 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/133342307 本文还…

C++的内存管理和模板

文章目录 一、内存管理1.内存的分布2.C中的动态内存管理3.重载new和重载delete4.new和delete的实现原理5.定位new 二、模板1.泛型编程2.函数模板1.定义模板2.实例化模板3.模板类型的参数4.非类型模板参数 3.类模板1.定义模板2.实例化模板3.模板的成员函数 总结 一、内存管理 1…

蓝桥杯每日一题2023.9.27

4408. 李白打酒加强版 - AcWing题库 题目描述 题目分析 对于这题我们发现有三个变量,店,花,酒的数量,对于这种范围我们使用DP来进行分析。 dp[i][j][k]我们表示有i个店,j朵花,k单位酒的集合&#xff0c…

逆向入门及实战

一、逆向工程介绍 1.1 什么是逆向工程 提到逆向工程可能大多数人第一印象就是非道德层面的软件破解,其实不然,逆向工程又称为逆向技术,是一种产品设计技术再现过程,即对一项目产品进行逆向分析及研究,从而演绎并得出该…

git 过滤不需要提交的目录和文件

项目根目录下(.git同级目录)添加.gitignore文件 .DS_Store .idea npm-debug.log yarn-error.log /node_modules /log/**.log /config.js

【2023年11月第四版教材】第15章《风险管理》(合集篇)

第15章《风险管理》(合集篇) 1 章节说明2 管理基础2.1 风险的属性2.2 风险的分类★★★2.3 风险成本★★★2.4 管理新实践 3 管理过程4 管理ITTO汇总★★★5 过程1-规划风险管理6 过程2-识别风险6.1 识别风险★★★6.2 数据收集★★★6.3 数据分析★★★…

第一次作业题解

第一次作业题解 P5717 【深基3.习8】三角形分类 思路 考的是if()的使用,还要给三条边判断大小 判断优先级&#xff1a; 三角形&#xff1f;直角、钝角、锐角等腰等边 判断按题给顺序来 代码 #include <stdio.h> int main() {int a 0, b 0, c 0, x 0, y 0, z 0…