赶紧!快加密吧!

简介: hello,大家好,我是Jackpop。今天跟大家聊一下隐私保护的话题。使用电脑久了,日积月累,都会沉淀下来一些隐私信息,内容包含但不限于文档、音频、视频等形式。

hello,大家好,我是Jackpop。今天跟大家聊一下隐私保护的话题。

使用电脑久了,日积月累,都会沉淀下来一些隐私信息,内容包含但不限于文档、音频、视频等形式。

存储在云盘上吧....都知道的,公有云盘安全性差,说不定哪天也就跑路了。

存在电脑上吧....又担心泄露隐私。

今天,就来手把手教大家开发一款专有的内容加密工具!

生成密钥

首先,正如我们之前所知道的,非对称加密有两个秘钥,而且是相互不同的。

一个是公钥,用于加密信息,另一个是私钥,用于解密信息。

'''
pip install pycryptodome
'''
from Crypto.PublicKey import RSA
key = RSA.generate(2048)
privateKey = key.export_key()
publicKey = key.publickey().export_key()
with open('private.pem', 'wb') as f:
    f.write(privateKey)
with open('public.pem', 'wb') as f:
    f.write(publicKey)
print('Private key saved to private.pem')
print('Public key saved to public.pem')
print('Done')

上面代码比较简单,首先导入Crypto工具包中的RSA模块,用于生成秘钥。然后你会得到两个文件:private.pem和public.pem。

保存公钥后面会用来加密数据,保存私钥用于解密数据。

加密函数

首先,给出加密函数的代码:

def encrypt(dataFile, publicKeyFile):
    '''
    use EAX mode to allow detection of unauthorized modifications
    '''
    # read data from file
    with open(dataFile, 'rb') as f:
        data = f.read()
    # convert data to bytes
    data = bytes(data)
    # read public key from file
    with open(publicKeyFile, 'rb') as f:
        publicKey = f.read()
    # create public key object
    key = RSA.import_key(publicKey)
    sessionKey = os.urandom(16)
    # encrypt the session key with the public key
    cipher = PKCS1_OAEP.new(key)
    encryptedSessionKey = cipher.encrypt(sessionKey)
    # encrypt the data with the session key
    cipher = AES.new(sessionKey, AES.MODE_EAX)
    ciphertext, tag = cipher.encrypt_and_digest(data)
    []
    # save the encrypted data to file
    [ fileName, fileExtension ] = dataFile.split('.')
    encryptedFile = fileName + '_encrypted.' + fileExtension
    with open(encryptedFile, 'wb') as f:
        [ f.write(x) for x in (encryptedSessionKey, cipher.nonce, tag, ciphertext) ]
    print('Encrypted file saved to ' + encryptedFile)

接下来,简单的解释一下这个函数。

这个函数有两个输入参数,文件的路径信息公钥的文件路径

当这个函数运行时,程序将打开消息文件并将数据转换为字节数。同时打开公钥,用一个随机值创建一个会话密钥,并将其附加到加密的消息文件中。这意味着,当有人试图修改该文件时,那么该文件就无法解密。

在我们有了会话密钥后,然后用公钥对该会话密钥进行加密。

最后,程序将用会话密钥加密数据,并保存加密的会话密钥、nonce、标签和密码文本。

解密函数

同样,先给出解密函数的代码:

def decrypt(dataFile, privateKeyFile):
    '''
    use EAX mode to allow detection of unauthorized modifications
    '''
    # read private key from file
    with open(privateKeyFile, 'rb') as f:
        privateKey = f.read()
        # create private key object
        key = RSA.import_key(privateKey)
    # read data from file
    with open(dataFile, 'rb') as f:
        # read the session key
        encryptedSessionKey, nonce, tag, ciphertext = [ f.read(x) for x in (key.size_in_bytes(), 16, 16, -1) ]
    # decrypt the session key
    cipher = PKCS1_OAEP.new(key)
    sessionKey = cipher.decrypt(encryptedSessionKey)
    # decrypt the data with the session key
    cipher = AES.new(sessionKey, AES.MODE_EAX, nonce)
    data = cipher.decrypt_and_verify(ciphertext, tag)
    # save the decrypted data to file
    [ fileName, fileExtension ] = dataFile.split('.')
    decryptedFile = fileName + '_decrypted.' + fileExtension
    with open(decryptedFile, 'wb') as f:
        f.write(data)
    print('Decrypted file saved to ' + decryptedFile)

解密函数和加密函数的概念是一样的,只不过解密函数的运行过程和加密是相反的。

本文介绍的文件加密和解密过程是非对称加密中比较基础的,希望通过本文能够让你了解一些勒索软件是如何加密你的数据,以及SSL如何加密通信。如果感兴趣,可以自己深入研究一下,开发一款功能更加高级的加密工具,给你的小姐姐加个密吧!

相关文章
|
监控 安全 物联网
13位物联网卡与11位物联网卡有什么不同
物联网卡(IoT卡)的13位号码和11位号码之间存在一些关键差异。以下是针对这两者区别的详细操作步骤和解释:
|
11月前
|
存储 编译器 数据库
《C 语言结构体:构建复杂数据模型的基石》
《C 语言结构体:构建复杂数据模型的基石》介绍了C语言中结构体的概念、定义和使用方法,以及如何利用结构体构建复杂的数据模型,是学习C语言和数据结构的重要参考资料。
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
651 0
|
10月前
|
存储 前端开发 JavaScript
前端状态管理:Vuex 核心概念与实战
Vuex 是 Vue.js 应用程序的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。本教程将深入讲解 Vuex 的核心概念,如 State、Getter、Mutation 和 Action,并通过实战案例帮助开发者掌握在项目中有效使用 Vuex 的技巧。
|
11月前
|
存储 Kubernetes 调度
深度解析Kubernetes中的Pod生命周期管理
深度解析Kubernetes中的Pod生命周期管理
|
网络协议 文件存储 Windows
Windows Server 2019 FTP服务器搭建
Windows Server 2019 FTP服务器搭建
378 0
|
存储 数据可视化 数据挖掘
2024年移动端CRM应用排名:客户管理的新趋势
移动端CRM应用正重塑企业客户管理,提升销售效率与客户满意度。通过实时数据同步、多渠道沟通及优化的服务流程,增强客户互动与关系。2024年国内领先应用如纷享销客、用友CRM等,提供全面的客户管理、销售跟踪和市场分析功能,助力企业数字化转型。
|
机器学习/深度学习 人工智能 自然语言处理
python如何实现AI问答与举例
python如何实现AI问答与举例
277 0
|
Java Linux PHP
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
279 1
|
存储 运维 监控
优脑银河携手阿里云 探索脑科学的终极疆域
人类科学最后的疆域有两个,一个是浩瀚的宇宙,另一个就是人类的大脑。阿里云让优脑银河可以专注在技术研发上,早日帮助脑疾病患者度过难关。
112640 6
优脑银河携手阿里云  探索脑科学的终极疆域