RSA加密算法解析

目录

RSA加密

数学原理

证明:

欧拉函数

欧拉定理

模反元素

模运算

指数运算

同余

欧几里德算法GCD

填充(padding)

对称加密的应用工作流程

非对称加密的应用工作流程

1)加密过程

2)解密过程

代码实现

密码学知识扩展

加密体制

 如何破解包括恺撒密码在内的单字母替换密码?

RSA安全性 


RSA加密

RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的

RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制

非对称加密(分公钥和私钥,不是依靠同一个密码来加解密),依靠随机填充(padding)可以达到:同一个明文、同一个公钥每次生成不同的密文,而私钥能正确解开密文

私钥加密,公钥解密 (私钥在服务器端,公钥在客户端);[为什么](RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密? - 知乎用户的回答 - 知乎 https://www.zhihu.com/question/25912483/answer/252031361)

RSA密钥长度越长约安全:1024、2048、3072….

数学原理

RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

一个正整数可以分解为两个互质数相乘,本质就是一个超大数运算,基于大合数的分解这一数学难题

1. n=p1*p2,取两个大的质数,相乘得到n。

        n就是密钥,n的长度就是密钥的长度

2. 对p1,p2两个质数,带入欧拉函数 得:

        φ(p1)=p1-1 ;φ(p2)=p2-1

        再两者相乘得到 n的欧拉函数

        φ(n)=φ(p1*p2)=φ(p1)φ(p2)=(p1-1)(p2-1)

3. 随机选择一个整数E,条件是1< e < φ(n),且e与φ(n) 互质,即满足gcd(e,φ(n))=1

        (注意:e的选取是很容易的,例如,所有大于p和q的素数都可用)

4. 计算e对于φ(n)的模反元素d

        ed=1(mod φ(n));e*d能被φ(n)+1整除 (d+dn都是φ(n)的模反元素)

5. 将n和e封装成公钥,n和d封装成私钥(d是最关键的密钥分量)

公钥=(n,e)

私钥=(n,d)

加密:

M^e=C(mod n)   

解密:

C^d=M(mod n)

证明:

M=C^d mod n     代换 C= M^e mod n

=(M^e mod n)^d mod n=M^ed mod n

由 ed = kφ(n)+1

=M^kφ(n)+1mod n = M ?

若 M和n互素 由欧拉定理

M^φ(n)=1 (mod n)

M^kφ(n)=1 (mod n) 两边同乘 M

M^kφ(n)+1=M (mod n) => M=C^d mod n

若不互素,gcd(m,n)≠1

(若mn互素gcd(m,pq)=1意味着m既不是p的倍数也不是q的倍数)

有n=p*q,即gcd(m,pq)≠1

设m=tp; gcd(m,q)=1 由欧拉定理 m^φ(q)=1(mod q)

m^kφ(q)=1(mod q) #1的任意次幂都是1,不管这个式子多少次幂 都等于 1(mod p)

[m^kφ(q)]^φ(p) = 1(mod q)

m^kφ(q)φ(p)=1(mod q)

m^kφ(q)φ(p)=m^kφ(n)=1 mod q 两边在同乘m

m^kφ(n)+1=m mod q =》 M^kφ(n)+1mod n = M 得证

个人理解,n是两边都有的,具体加密中的p,q不知道,一个很大的数,想确定一对p*q=n很难(就算是质数也很难,因为数量真的很多) 用e加密,e是随机取的,用d解密 d是根据e和φ(n)算出来的 ,φ(n)是通过p和q算出来的 所以想破解d是很难的,关于怎么加密解密的过程, 注意点:M=C^d mod n 与C= M^e mod n的代换、ed的产生、1的n次幂还是1、以及欧拉定理 a^φ(n)=1 (mod n) 的同乘M  

欧拉函数

定义:欧拉函数(Euler's totient function),即φ(n),表示的是小于等于n的数中,和n互质的数的个数。 如φ(1)=1

欧拉方程有两个性质对RSA算法来说是特别重要的。

当n是质数的时候,显然有φ(n)=n-1 (费马小定理)这是由于n的唯一因子是1和n,因此,n与之前的所有n-1个正整数都是互素的。

另一个有趣的性质是对于任意小于n且与n互素的正整数a,都有aφ(n) mod n = 1。例如,14 mod 8 = 1, 34 mod 8 = 1, 54 mod 8 = 1, 74 mod 8 = 1。对上述方程两边都乘以a,得到:a*(aφ(n) mod n)=a,或者aφ(n)+1 mod n = a

欧拉定理

欧拉定理表明,若​​n​​,​​a​​为正整数,且​​n,a互质​​,则以下公式成立:

即:a的φ(n)次方 被 n整除余1

例:2和5互质,φ(5)=4,2的4次方是16,减去1等于15更好被5整除。

那么根据欧拉函数的特例,质数p 的 φ(p1)=p1-1 得 

模反元素

如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab被n+1整除,或者说ab被n除的余数是1。这时,b就叫做a的“模反元素”。

ab=1(mod n)

例: a=3,n=4

(3b-1)%4=0 ;3b= k4 +1 ;ab=k*n+1 ; (k≥1为任意整数)

故b=7或者3

显然模反元素不止一个,即如果b是a的模反元素,则b+kn都是a的模反元素(k为正整数)

可以看出,a的 φ(n)-1 次方,就是a对模数n的模反元素a{^{\varphi(n)}}=a*a{^{\varphi(n)-1}} \equiv 1(mod n)

模运算

让m去被n整除,只取所得的余数作为结果,就叫做模运算。10 mod 4=2;8 mod 3=2;

指数运算

 指数运算又称乘方计算,计算结果称为幂。nm指将n自乘m次。把nm看作乘方的结果,叫做”n的m次幂”或”n的m次方”。其中,n称为“底数”,m称为“指数”。

同余

数学上,当两个整数除以同一个整数,若得相同余数,则二整数同余。即两个整数a,b,它们除以正整数m所得的余数相等。从特例来解释:b是a模m的余数

给定一个正整数m,如果两个整数a和b满足a-b能被m整除,即(a-b) mod m=0, 那么就称整数a与b对模m同余,记作a≡b (mod m),同时可成立a mod m=b


欧几里德算法GCD

欧几里德算法是用来求两个正整数最大公约数的算法
计算公式gcd(a,b) = gcd(b,a mod b)

填充(padding)

是为了解决每次加密,明文不变,密文也不变的情况。

要遵循欧拉定理的数学公式,对明文长度是有要求的,必须是16的整数倍,不是整数倍就需要填充到那么长,如果刚好是16的倍数也需要再填充。

一开始是固定的填充 比如 明文+0000达到规定长度

后面出现了新的填充模式,每次的填充值随机的变化,但是是有规则的,还是可以用私钥解开

比如 明文+123456

好处在于让加密后的密文每次不一样,不管填充模式怎么变,填充值是什么,只要我通过相同的填充模式去解密,就能把不断变化的明文解出来。

填充模式: NoPadding、OAEPPadding、PKCS1Padding等,PKCS#1的padding就占用了11个字节

公钥和私钥使用不一样的填充模式会导致解密的失败

NoPadding的填充模式不安全(就是填0)

对称加密的应用工作流程

对称加密:DES,AES

DES.encrypt(明文,密钥) 加密——》密文

客户端(加密) ——》传输——》服务器(解密)

DES.decrypt(密文,密钥) 解密 ——》明文

非对称加密的应用工作流程

非对称加密:RSA

RSA.encrypt(明文,公钥,填充值) 加密——》密文

客户端(公钥加密) ——》传输——》服务器(私钥解密)

RSA.decrypt(密文,私钥,填充方式) 解密——》明文

1)加密过程

加密时首先将明文比特串分组,使得每一个分组对应的十进制数小于n,即分组长度小于\log_{2}n,然后对每个明文分组M{_{i}}做加密运算,具体过程分为如下步骤:

 

(1)获得接收方公钥(e,n);

(2)把消息M分组为长度为L(L< \log_{2}n)的消息分组M=M{_{1}}M{_{2}}...M{_{t}}

(3)使用加密算法C_{i}=C_{i}^{e}(mod n)(1 \leq i \leq t)计算出密文C=C{_{1}}C{_{2}}...C{_{t}};

(4)将密文C发送给接收方;

2)解密过程

(1)接收方收到密文C=C{_{1}}C{_{2}}...C{_{t}};

(2)使用私钥d逐一恢复明文分组M , M_{i}=c_{i}^{d}(mod n)(1 \leq i \leq t)

(3)得明文消息 M=M{_{1}}M{_{2}}...M{_{t}}

有些明文太长了 常见处理手法是:非对称加密(对称加密(明文))


代码实现

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_PKCS1_v1_5
import rsa
import base64#传入长度 注册一个key对象
key=RSA.generate(1024)
#设置一个公钥
pubkey=key.publickey().export_key()
print("pub key:",pubkey)
print("pub len:",len(pubkey))
#设置一个私钥
privkey=key.export_key()
print("pri key:",privkey)
print("pri len:",len(privkey))
#导入公钥  注册一个RSA对象
rsa_key=RSA.importKey(pubkey)
print("n:",rsa_key.n)
print("e:",rsa_key.e)#传入RSA对象  创建一个PKCS1填充模式的 加密对象
cipher=Cipher_PKCS1_v1_5.new(rsa_key)
#明文
text="hello rsa"
#加密
cipher_text=cipher.encrypt(text.encode())
print("cipher_text:",cipher_text)
print("len:",len(cipher_text))#导入私钥  注册一个RSA对象
rsa_key=RSA.importKey(privkey)
#解密
cipher=Cipher_PKCS1_v1_5.new(rsa_key)
plaintext=cipher.decrypt(cipher_text,None).decode(encoding='utf-8')
print("plaintext:",plaintext)

密码学知识扩展

加密体制

凯撒密码

        凯撒密码,或称恺撒加密、恺撒变换、变换加密,是一种替换加密的技术,以罗马共和时期恺撒的名字命名,恺撒曾用此方法对重要的军事信息进行加密,恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。即明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,是最简单且最广为人知的加密技术之一。

其基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。位数就是凯撒密码加密和解密的密钥。
例子如下:

凯撒当时就是按照字母按顺序后推3位,只需简单地统计字频就可以破译。现今又叫“移位密码”,只不过移动的位数不一定是3位而已。我们知道字母有26位置,那么我们一个字母除了本身的位置还有25个位置可以做位移

 

那么我们拿到密文,即使没有密匙也能尝试将它破解出来,因为凯撒移位密码只有25种密匙,最多就是将这25种可能性挨个检测一下可以了,这就是我们所说的暴力破解法。

你可能要说了那这个加密强度很低啊,是的因为刚才说的仅仅是按顺序往后位移。因此,为了使密码有更高的安全性,单字母替换密码就出现了。

只需重排密码表二十六个字母的顺序,允许密码表是明码表的任意一种重排,密钥就会增加到四千亿亿亿多种,我们就有超过4×1027种密码表。破解就变得很困难。

如:

明码表 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

密码表 Q W E R T Y U I O P A S D F G H J K L Z X C V B N M

明文 F O R E S T

密文 Y G K T L Z

公钥密码体制        

在公钥体制中,加密密钥不同于解密密钥。人们将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道。迄今为止的所有公钥密码体系中,RSA系统是最著名、使用最广泛的一种。

发展历程

1976年提出公共密钥密码体制,其原理是加密密钥和解密密钥分离。这样,一个具体用户就可以将自己设计的加密密钥和算法公诸于众,而只保密解密密钥。任何人利用这个加密密钥和算法向该用户发送的加密信息,该用户均可以将之还原。公共密钥密码的优点是不需要经安全渠道传递密钥,大大简化了密钥管理。它的算法有时也称为公开密钥算法或简称为公钥算法。

1978年提出公共密钥密码的具体实施方案,即RSA方案。

1991年提出的DSA算法也是一种公共密钥算法,在数字签名方面有较大的应用优势。

 如何破解包括恺撒密码在内的单字母替换密码?

 方法:字母频度分析

 “如果我们知道一条加密信息所使用的语言,那么破译这条加密信息的方法就是找出同样的语言写的一篇其他文章,大约一页纸长,然后我们计算其中每个字母的出现频率。我们将频率最高的字母标为1号,频率排第2的标为2号,第三标为3号,依次类推,直到数完样品文章中所有字母。然后我们观察需要破译的密文,同样分类出所有的字母,找出频率最高的字母,并全部用样本文章中最高频率的字母替换。第二高频的字母用样本中2号代替,第三则用3号替换,直到密文中所有字母均已被样本中的字母替换。”

尽管我们不知道是谁发现了字母频度的差异可以用于破解密码。但是9世纪的科学家阿尔·金迪在《关于破译加密信息的手稿》对该技术做了最早的描述。

以英文为例,首先我们以一篇或几篇一定长度的普通文章,建立字母表中每个字母的频度表。

在分析密文中的字母频率,将其对照即可破解。

虽然设密者后来针对频率分析技术对以前的设密方法做了些改进,比如说引进空符号等,目的是为了打破正常的字母出现频率。但是小的改进已经无法掩盖单字母替换法的巨大缺陷了。到16世纪,最好的密码破译师已经能够破译当时大多数的加密信息。

局限性:

短文可能严重偏离标准频率,假如文章少于100个字母,那么对它的解密就会比较困难。

而且不是所有文章都适用标准频度:

1969年,法国作家乔治斯·佩雷克写了一部200页的小说《逃亡》,其中没有一个含有字母e的单词。更令人称奇的是英国小说家和评论家吉尔伯特·阿代尔成功地将《逃亡》翻译成英文,而且其中也没有一个字母e。阿代尔将这部译著命名为《真空》。如果这本书用单密码表进行加密,那么频度分析破解它会受到很大的困难。

一套新的密码系统由法国外交家维热纳尔(Blaise de Vigenère)于16世纪末确立。其密码不再用一个密码表来加密,而是使用了26个不同的密码表。这种密码表最大的优点在于能够克制频度分析,从而提供更好的安全保障。

RSA安全性 

  • 密码学知识扩展:

  • 加密体制:

    • 凯撒密码:

      凯撒密码,或称恺撒加密、恺撒变换、变换加密,是一种替换加密的技术,以罗马共和时期恺撒的名字命名,恺撒曾用此方法对重要的军事信息进行加密,恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。即明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,是最简单且最广为人知的加密技术之一。

      其基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。位数就是凯撒密码加密和解密的密钥。 例子如下:

       

凯撒当时就是按照字母按顺序后推3位,只需简单地统计字频就可以破译。现今又叫“移位密码”,只不过移动的位数不一定是3位而已。我们知道字母有26位置,那么我们一个字母除了本身的位置还有25个位置可以做位移

  那么我们拿到密文,即使没有密匙也能尝试将它破解出来,因为凯撒移位密码只有25种密匙,最多就是将这25种可能性挨个检测一下可以了,这就是我们所说的暴力破解法。 你可能要说了那这个加密强度很低啊,是的因为刚才说的仅仅是按顺序往后位移。因此,为了使密码有更高的安全性,单字母替换密码就出现了。只需重排密码表二十六个字母的顺序,允许密码表是明码表的任意一种重排,密钥就会增加到四千亿亿亿多种,我们就有超过4×1027种密码表。破解就变得很困难。如:明码表 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z密码表 Q W E R T Y U I O P A S D F G H J K L Z X C V B N M明文 F O R E S T密文 Y G K T L Z- 公钥密码体制在公钥体制中,加密密钥不同于解密密钥。人们将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道。迄今为止的所有公钥密码体系中,RSA系统是最著名、使用最广泛的一种。### 发展历程1976年提出公共密钥密码体制,其原理是加密密钥和解密密钥分离。这样,一个具体用户就可以将自己设计的加密密钥和算法公诸于众,而只保密解密密钥。任何人利用这个加密密钥和算法向该用户发送的加密信息,该用户均可以将之还原。公共密钥密码的优点是不需要经安全渠道传递密钥,大大简化了密钥管理。它的算法有时也称为公开密钥算法或简称为公钥算法。1978年提出公共密钥密码的具体实施方案,即RSA方案。1991年提出的DSA算法也是一种公共密钥算法,在数字签名方面有较大的应用优势。
  • 如何破解包括恺撒密码在内的单字母替换密码?

    • 方法:字母频度分析

      “如果我们知道一条加密信息所使用的语言,那么破译这条加密信息的方法就是找出同样的语言写的一篇其他文章,大约一页纸长,然后我们计算其中每个字母的出现频率。我们将频率最高的字母标为1号,频率排第2的标为2号,第三标为3号,依次类推,直到数完样品文章中所有字母。然后我们观察需要破译的密文,同样分类出所有的字母,找出频率最高的字母,并全部用样本文章中最高频率的字母替换。第二高频的字母用样本中2号代替,第三则用3号替换,直到密文中所有字母均已被样本中的字母替换。”

      尽管我们不知道是谁发现了字母频度的差异可以用于破解密码。但是9世纪的科学家阿尔·金迪在《关于破译加密信息的手稿》对该技术做了最早的描述。

      以英文为例,首先我们以一篇或几篇一定长度的普通文章,建立字母表中每个字母的频度表。

      在分析密文中的字母频率,将其对照即可破解。

      虽然设密者后来针对频率分析技术对以前的设密方法做了些改进,比如说引进空符号等,目的是为了打破正常的字母出现频率。但是小的改进已经无法掩盖单字母替换法的巨大缺陷了。到16世纪,最好的密码破译师已经能够破译当时大多数的加密信息。

    • 局限性:

      短文可能严重偏离标准频率,假如文章少于100个字母,那么对它的解密就会比较困难。

      而且不是所有文章都适用标准频度:

      1969年,法国作家乔治斯·佩雷克写了一部200页的小说《逃亡》,其中没有一个含有字母e的单词。更令人称奇的是英国小说家和评论家吉尔伯特·阿代尔成功地将《逃亡》翻译成英文,而且其中也没有一个字母e。阿代尔将这部译著命名为《真空》。如果这本书用单密码表进行加密,那么频度分析破解它会受到很大的困难。

      一套新的密码系统由法国外交家维热纳尔(Blaise de Vigenère)于16世纪末确立。其密码不再用一个密码表来加密,而是使用了26个不同的密码表。这种密码表最大的优点在于能够克制频度分析,从而提供更好的安全保障。

  • RSA安全性:

    一个现代密码体制必须能经得住训练有素的密码分析家借助计算机寻找秘密密钥的攻击或用某些其他方法试破密文的攻击。在RSA体制中,如果密码分析家(知道公开密钥e和n)能把n分解成p和q,那么他就可以计算出F(n),接着找出秘密密钥分量d。

    在已知n和e的情况下即(公钥),能否推导出d?

    (1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。

    (2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。

    (3)n=pq。只有将n因数分解,才能算出p和q。

    • 但RSA应用中,不可能跟我们举例子一样那么小,而且大整数的因数分解,是一件非常困难的事情,例如:

      12301866845301177551304949 58384962720772853569595334 79219732245215172640050726 36575187452021997864693899 56474942774063845925192557 32630345373154826850791702 61221429134616704292143116 02221240479274737794080665 351419597459856902143413

    没法对这个整数进行因数分解,过于大了,而且目前破解的只有暴力破解,所以RSA才号称是目前地球上最安全的算法。

一些其他的参考

现代密码学(四)——RSA密码体制_简述rsa密码体制_Quincy678的博客-CSDN博客

数据加密--详解 RSA加密算法 原理与实现

阮一峰先生的两篇文章《RSA算法原理(一)》、《RSA算法原理(二)》

现代密码学|RSA加密算法及其数学基础_哔哩哔哩_bilibili

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

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

相关文章

探究Vue源码:mustache模板引擎(1) 什么是模板引擎

之前在讲虚拟dom和diff算法时说过后续会讲模板引擎 啊 那这边 说到做到哈 对这个问题 有个比较官方的回答 模板引擎是将数据变为视图的最优雅的解决方案 比如 将左侧数据变为右侧视图 大家应该最先想到的就是 v-for 其实 v-for 就是一种模板引擎语法 从图中看出 模板引擎处理…

氟化物选择吸附树脂Tulsimer ®CH-87 ,锂电行业废水行业矿井水除氟专用树脂

氟化物选择吸附树脂 Tulsimer CH-87 是一款去除水溶液中氟离子的专用的凝胶型选择性离子交换树脂。它是具有氟化物选择性官能团的交联聚苯乙烯共聚物架构的树脂。 去除氟离子的能力可以达到 1ppm 以下的水平。中性至碱性的PH范围内有较好的工作效率&#xff0c;并且很容易再生…

学习HTTP2

这是有关HTTP最后一部分内容的学习啦~今天一起来学习HTTP/2&#xff01; HTTP2 HTTP/2&#xff08;超文本传输协议第2版&#xff0c;最初命名为HTTP 2.0&#xff09;&#xff0c;简称为h2&#xff08;基于TLS/1.2或以上版本的加密连接&#xff09;或h2c&#xff08;非加密连接…

补番推荐

目录 first弹丸论破 second 学园默示录 third罪恶王冠 FIRST 弹丸论破 http://v.pptv.com/show/Dym1MpoAcK4Rj1M.html 本作在背景设定方面&#xff0c;游戏中当玩家们找出犯人的时候&#xff0c;犯人将会因此而被处置杀害。不过如果玩家们不能找出真正的犯人&#xff0c…

职业生涯规划-转[Mark.Chan]

转载自:https://www.cnblogs.com/mark-chan/p/5380135.html 担任公司高管的几年间&#xff0c;我面试过数以百计的各个层面的员工&#xff0c;其中最让我感到遗憾的一个现象就是很多人有着非常好的素质&#xff0c;甚至有的还是名校的毕业生&#xff0c;因为不懂得去规划自己的…

qq修改群名服务器失败,qq建群失败什么原因 q群一直创建失败 - 云骑士一键重装系统...

Q群聊创建一直失败是什么原因&#xff0c;一起来了解一下吧 QQ群创建失败会有以下几种情况&#xff0c;请您参考&#xff1a; 提示“敏感字眼/输入不符合规范”&#xff1a; 由于群名称或群简介内容中含敏感受限词汇导致&#xff0c;建议您检查后删除再尝试。 提示“系统繁忙&a…

python数据可视化-matplotlib学习总结

目录 &#xff08;一&#xff09;常见的图形 1、趋势图&#xff08;直线图&#xff09;&#xff1a;plot&#xff08;&#xff09; 2、散点图&#xff1a;scatter(): (二&#xff09;统计图形 1、柱状图&#xff1a;bar( 2、条形图&#xff1a;barh() 3、直方图&#xff…

搭建ubuntu容器内C/C++开发调试环境

一、创建容器 为了让容器内的调试器&#xff08;gdb、lldb&#xff09;能够正常调试&#xff0c;在创建容器时需要添加参数&#xff1a; podman添加参数&#xff1a;--cap-addSYS_PTRACE&#xff0c;docker添加参数--cap-addSYS_PTRACE --security-opt seccompunconfined 否…

不知道图片变漫画怎么弄?来跟我学这几个简单的方法

我想问经常换头像的朋友一个问题&#xff0c;你们有用过自己的漫画脸当头像吗&#xff1f;如果我们把自己的头像做成漫画脸不仅不容易和别人撞头像而且更加能贴合我们自身的形象。那你们知道漫画脸怎么拍吗&#xff1f;今天我来给大家分享几个漫画脸制作都的方法。有兴趣的朋友…

适合剪辑新手的几个网站

现在越来越多的人喜欢剪辑视频了&#xff0c;现在我就推荐几个不错的适合剪辑新手的网站。 1.Videvo 这是一个提供高清或 4K 音频和视频的网站。它的视频分类详细&#xff0c;主要的分类有镜头和图文。 我更喜欢它的镜头类型下的视频&#xff0c;每一帧都很好看&#xff01; …

古画会唱歌/图片说话对口型视频教程+工具素材

正文: 一张人物古画对口型&#xff0c;配上一段搞笑的配音&#xff0c;轻轻松松就能获得十几万的点赞&#xff0c;这个适合小白去操作&#xff0c;不仅好玩有趣涨粉还特别快。 视频演示放到压缩包了&#xff0c;有兴趣的自己去看吧。 教程工具素材 全部打包: wwreh.lanzoui…

短视频剪辑的小技巧分享,助你剪出令人印象深刻的片段,吸粉引流

短视频剪辑的小技巧分享&#xff0c;助你剪出令人印象深刻的片段&#xff0c;吸粉引流 短视频剪辑说难也难&#xff0c;但是说简单其实也简单&#xff0c;毕竟只要认真学习&#xff0c;大概几天就可以基本掌握短视频剪辑的流程&#xff0c;只是如果想要剪辑出来可以吸粉引流的…

全网最简单的网络图画法,小白福音包学包会

全网最简单的网络图画法&#xff0c;小白福音包学包会 徐锐&#xff08;助理研究员&#xff09;&#xff0c;广东省生态环境技术研究所&#xff0c;土壤微生物与宏基因组方向 版本1.0.1&#xff0c;更新日期&#xff1a;2020年6月23日 本项目永久地址&#xff1a;https://githu…

Python程序设计基础:标识符、变量与赋值、输入输出

文章目录 一、标识符二、变量与赋值三、输入输出 一、标识符 Python对每个标识符的命名存在要求&#xff1a; 1、每个标识符必须以字母或下划线“_”开头&#xff0c;后跟字母、数字或下划线的任意序列。根据这个规则&#xff0c;以下都是Python中的合法名称&#xff1a;a&…

光纤熔接之盘纤技巧(首先你得有一把好切割刀)

光纤熔接不可忽视的一个步骤——【盘纤】。科学的盘纤方法&#xff0c;可使光纤布局合理、附加损耗小、经得住时间和恶劣环境的考验&#xff0c;可避免挤压造成的断纤现象。 很多自称干了10多年的光纤熔接师傅盘起来的光纤“惨不忍睹” 整个光纤熔接是一门细致的手艺活。光纤熔…

第三篇——胡咧咧之动漫素材如何剪辑,只拼接可以吗?

第三篇——胡咧咧之动漫素材如何剪辑&#xff0c;只拼接可以吗&#xff1f; 上一篇告诉大家如何下载素材了&#xff0c;现在大家电脑里都有素材了&#xff0c;可是&#xff0c;不能直接发布到抖音里&#xff0c;否则&#xff0c;就是版权侵权&#xff0c;违规&#xff0c;轻则…

爬了1000张清纯妹子私房照,我流鼻血了...

闲扯几句 大家好&#xff0c;我是你们的老朋友青戈&#xff0c;之前分享了一篇Java爬虫的入门实战教程&#xff0c;收获了不少赞&#xff0c;看来大家伙对爬虫的热情度还是蛮高的哈。既然大家都这么想学爬虫&#xff0c;那今天就安排点刺激的。那你要非问我有多刺激&#xff0…

SpringBootWeb案例-1(上: 来源黑马程序员)

SpringBootWeb案例 完成后的成品效果展示&#xff1a; 主要内容如下&#xff1a; 准备工作部门管理 1. 准备工作 我们先从"需求"和"环境搭建"开始入手。 1.1 需求&环境搭建 1.1.1 需求说明 1、部门管理 部门管理功能开发包括&#xff1a; 查询部…

高校学生公寓数字化安全用电管理系统解决方案

摘要 本文针对高校学生公寓用电特点,从安全用电角度提出了一套集用电管理、计量、恶性负载智能识别控制、实时跟踪检测等功能于一体的数字化安全用电管理系统技术解决方案———学生公寓智能控电管理系统。 关键词:公寓恶性负载安全用电智能系统 0、引言 近年来,为了响应国…

短视频矩阵源码系统打包.源码

Masayl是一款基于区块链技术的去中心化应用程序开发平台&#xff0c;可帮助开发者快速、便捷地创建去中心化应用程序。Masayl拥有丰富的API和SDK&#xff0c;为开发者们提供了支持。此外&#xff0c;Masayl还采用了高效的智能合约技术&#xff0c;确保应用程序的稳定、安全和高…