用python写一个加密解密

时间: 2023-06-01 22:04:18 浏览: 41
以下是一个简单的加密解密程序: ```python def encrypt(msg): """ 简单的加密函数:将每个字符的ASCII码加上固定值 """ key = 5 encrypted_msg = "" for char in msg: encrypted_msg += chr(ord(char) + key) return encrypted_msg def decrypt(encrypted_msg): """ 简单的解密函数:将每个字符的ASCII码减去固定值 """ key = 5 msg = "" for char in encrypted_msg: msg += chr(ord(char) - key) return msg # 测试 message = "Hello, World!" encrypted_message = encrypt(message) print("加密后的消息:", encrypted_message) decrypted_message = decrypt(encrypted_message) print("解密后的消息:", decrypted_message) ``` 输出: ``` 加密后的消息: Mjqqt,%%twqi& 解密后的消息: Hello, World! ``` 当然,这只是一个简单的演示。实际应用中,需要更加复杂和安全的加密算法,例如AES、RSA等。
相关问题

Python写一个RSA加密解密

### 回答1: 好的,以下是一份使用 Python 实现 RSA 加密解密的示例代码: ``` import rsa # RSA加密 def rsa_encrypt(plaintext, pub_key): # 加密 ciphertext = rsa.encrypt(plaintext.encode(), pub_key) # 返回密文 return ciphertext # RSA解密 def rsa_decrypt(ciphertext, pri_key): # 解密 plaintext = rsa.decrypt(ciphertext, pri_key).decode() # 返回明文 return plaintext # 生成公钥、私钥 (pub_key, pri_key) = rsa.newkeys(512) # 待加密的明文 plaintext = "RSA encryption test" # 调用RSA加密函数,进行加密 ciphertext = rsa_encrypt(plaintext, pub_key) # 调用RSA解密函数,进行解密 decrypted_plaintext = rsa_decrypt(ciphertext, pri_key) # 输出结果 print("待加密的明文:", plaintext) print("加密后的密文:", ciphertext) print("解密后的明文:", decrypted_plaintext) ``` 注意:本代码仅供参考,实际使用中可能需要对代码进行一定的修改。 ### 回答2: RSA加密算法是一种非对称加密算法,可以用来对数据进行加密和解密。以下是使用Python编写的RSA加密解密的示例代码: ```python import rsa # 生成RSA密钥对 (public_key, private_key) = rsa.newkeys(512) # 要加密的原始数据 plaintext = 'Hello, RSA!' # 使用公钥进行加密 ciphertext = rsa.encrypt(plaintext.encode(), public_key) # 使用私钥进行解密 decrypted_text = rsa.decrypt(ciphertext, private_key).decode() print('原始数据:', plaintext) print('加密后数据:', ciphertext) print('解密后数据:', decrypted_text) ``` 这段代码使用`rsa`库生成了一个512位长度的RSA密钥对。然后,我们定义了要加密的原始数据`plaintext`为`Hello, RSA!`。接下来,使用公钥`public_key`对原始数据进行加密,加密后的数据存储在`ciphertext`中。最后,使用私钥`private_key`对加密后的数据进行解密,解密后的数据存储在`decrypted_text`中。 运行这段代码,我们可以看到输出结果为: ``` 原始数据: Hello, RSA! 加密后数据: b'\x8e)...\x19' 解密后数据: Hello, RSA! ``` 可以看到,在经过加密和解密过程后,解密后的数据与原始数据完全一致,证明RSA加密解密过程正确无误。 ### 回答3: RSA是一种非对称加密算法,可以用于数据的加密和解密过程。Python提供了一种库叫做`rsa`,可以简化RSA加密和解密过程的实现。 首先,我们需要安装`rsa`库。在终端中运行以下命令: ```python pip install rsa ``` 安装完毕后,可以开始编写RSA加密和解密程序。 加密过程: ```python import rsa # 生成密钥对(公钥和私钥) (public_key, private_key) = rsa.newkeys(2048) # 要加密的数据 message = b"Hello, RSA!" # 使用公钥加密数据 encrypted_message = rsa.encrypt(message, public_key) # 打印加密后的数据 print("加密后的数据:", encrypted_message) ``` 解密过程: ```python import rsa # 使用私钥解密数据 decrypted_message = rsa.decrypt(encrypted_message, private_key) # 打印解密后的数据 print("解密后的数据:", decrypted_message) ``` 在上面的例子中,我们使用了一个2048位的密钥对进行加密和解密。首先生成了一个新的密钥对,然后使用`rsa.encrypt`函数使用公钥对数据进行加密,最后使用`rsa.decrypt`函数使用私钥对数据进行解密。 需要注意的是,`rsa.encrypt`和`rsa.decrypt`函数接受的数据类型是`bytes`,所以在加密和解密过程中需要将字符串转换为`bytes`类型。 以上就是用Python写一个RSA加密解密的简单示例。当然,实际应用中还需要考虑更多的情况,比如键值的存储和管理,数据的序列化和反序列化,异常处理等。

python 写个 RSA加密解密

好的,下面是一个简单的 Python RSA加密解密程序: ```python import random import math # 模幂运算:计算 (base^exp) % mod def exp_mode(base, exp, mod): result = 1 while exp > 0: if exp % 2 == 1: result = (result * base) % mod base = (base * base) % mod exp = exp // 2 return result # 判断是否为质数 def is_prime(n): if n <= 1: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True # 生成指定位数的质数 def generate_prime(bit): while True: p = random.randint(2**(bit-1), 2**bit-1) if is_prime(p): return p # 求最大公约数 def gcd(a, b): if b == 0: return a else: return gcd(b, a % b) # 扩展欧几里得算法 def exgcd(a, b): if b == 0: return 1, 0, a else: x, y, gcd = exgcd(b, a % b) return y, x - (a // b) * y, gcd # 生成 RSA公钥和私钥 def generate_rsa_key(bit): p = generate_prime(bit // 2) q = generate_prime(bit // 2) n = p * q phi = (p - 1) * (q - 1) e = 65537 d, _, _ = exgcd(e, phi) d = (d % phi + phi) % phi return (e, n), (d, n) # RSA加密 def rsa_encrypt(plaintext, public_key): e, n = public_key ciphertext = [exp_mode(ord(c), e, n) for c in plaintext] return ciphertext # RSA解密 def rsa_decrypt(ciphertext, private_key): d, n = private_key plaintext = [chr(exp_mode(c, d, n)) for c in ciphertext] return ''.join(plaintext) # 测试代码 if __name__ == '__main__': # 生成 RSA公钥和私钥 public_key, private_key = generate_rsa_key(1024) # 显示公钥和私钥 print('Public key:', public_key) print('Private key:', private_key) # 明文和密文 plaintext = 'Hello, world!' ciphertext = rsa_encrypt(plaintext, public_key) decrypted_plaintext = rsa_decrypt(ciphertext, private_key) # 显示加密和解密结果 print('Plaintext:', plaintext) print('Ciphertext:', ciphertext) print('Decrypted plaintext:', decrypted_plaintext) ``` 上面的程序实现了基本的 RSA加密解密功能,生成了一个 1024位的 RSA公钥和私钥,对明文进行加密后再解密,最后输出加密前后的结果。

相关推荐

3DES (Triple Data Encryption Standard) 是一种对称加密算法,它使用三个不同的密钥进行加密。下面是一个使用 Python 实现 3DES 加密解密算法的示例代码: python from Crypto.Cipher import DES3 import base64 def encrypt_3des(key, data): # 将密钥转换为字节类型 key = key.encode('utf-8') # 创建 3DES 加密器 cipher = DES3.new(key, DES3.MODE_ECB) # 将数据转换为字节类型 data = data.encode('utf-8') # 使用 3DES 加密器加密数据 encrypted_data = cipher.encrypt(data) # 将加密后的数据进行 base64 编码后返回 return base64.b64encode(encrypted_data).decode('utf-8') def decrypt_3des(key, encrypted_data): # 将密钥转换为字节类型 key = key.encode('utf-8') # 创建 3DES 解密器 cipher = DES3.new(key, DES3.MODE_ECB) # 将加密后的数据进行 base64 解码 encrypted_data = base64.b64decode(encrypted_data) # 使用 3DES 解密器解密数据 decrypted_data = cipher.decrypt(encrypted_data) # 将解密后的数据转换为字符串类型并返回 return decrypted_data.decode('utf-8') 使用示例: python key = '12345678901234567890123456789012' data = 'Hello, World!' encrypted_data = encrypt_3des(key, data) print('加密后的数据:', encrypted_data) decrypted_data = decrypt_3des(key, encrypted_data) print('解密后的数据:', decrypted_data) 输出结果: 加密后的数据: uF4LwX8JqfJbdSFV8iWj8Q== 解密后的数据: Hello, World! 注意:以上代码使用了 PyCryptodome 库来实现 3DES 加密解密,需要先安装该库。可以使用以下命令来安装: pip install pycryptodome

最新推荐

Python基于DES算法加密解密实例

主要介绍了Python基于DES算法加密解密实现方法,以实例形式分析了DES算法实现加密解密的相关技巧,需要的朋友可以参考下

python实现AES加密和解密

主要为大家详细介绍了python实现AES加密和解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

使用Python进行AES加密和解密的示例代码

主要介绍了使用Python进行AES加密和解密的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

python加密解密库cryptography使用openSSL生成的密匙加密解密

主要介绍了python加密解密库cryptography使用openSSL生成的密匙加密解密,需要的朋友可以参考下

十一工具箱流量主小程序源码

无授权,去过滤机制版本 看到网上发布的都是要授权的 朋友叫我把他去授权,能用就行 就把过滤去了 这样就不用授权 可以免费使用 白嫖党专属 一切接口可用,无需担心不能用 授权者不关站一直可以用

代码随想录最新第三版-最强八股文

这份PDF就是最强⼋股⽂! 1. C++ C++基础、C++ STL、C++泛型编程、C++11新特性、《Effective STL》 2. Java Java基础、Java内存模型、Java面向对象、Java集合体系、接口、Lambda表达式、类加载机制、内部类、代理类、Java并发、JVM、Java后端编译、Spring 3. Go defer底层原理、goroutine、select实现机制 4. 算法学习 数组、链表、回溯算法、贪心算法、动态规划、二叉树、排序算法、数据结构 5. 计算机基础 操作系统、数据库、计算机网络、设计模式、Linux、计算机系统 6. 前端学习 浏览器、JavaScript、CSS、HTML、React、VUE 7. 面经分享 字节、美团Java面、百度、京东、暑期实习...... 8. 编程常识 9. 问答精华 10.总结与经验分享 ......

基于交叉模态对应的可见-红外人脸识别及其表现评估

12046通过调整学习:基于交叉模态对应的可见-红外人脸识别Hyunjong Park*Sanghoon Lee*Junghyup Lee Bumsub Ham†延世大学电气与电子工程学院https://cvlab.yonsei.ac.kr/projects/LbA摘要我们解决的问题,可见光红外人重新识别(VI-reID),即,检索一组人的图像,由可见光或红外摄像机,在交叉模态设置。VI-reID中的两个主要挑战是跨人图像的类内变化,以及可见光和红外图像之间的跨模态假设人图像被粗略地对准,先前的方法尝试学习在不同模态上是有区别的和可概括的粗略的图像或刚性的部分级人表示然而,通常由现成的对象检测器裁剪的人物图像不一定是良好对准的,这分散了辨别性人物表示学习。在本文中,我们介绍了一种新的特征学习框架,以统一的方式解决这些问题。为此,我们建议利用密集的对应关系之间的跨模态的人的形象,年龄。这允许解决像素级中�

rabbitmq客户端账号密码

在默认情况下,RabbitMQ的客户端账号和密码是"guest"。 但是,默认情况下,这个账号只能在localhost本机下访问,无法远程登录。如果需要添加一个远程登录的用户,可以使用命令rabbitmqctl add_user来添加用户,并使用rabbitmqctl set_permissions设置用户的权限。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [保姆级别带你入门RabbitMQ](https:

数据结构1800试题.pdf

你还在苦苦寻找数据结构的题目吗?这里刚刚上传了一份数据结构共1800道试题,轻松解决期末挂科的难题。不信?你下载看看,这里是纯题目,你下载了再来私信我答案。按数据结构教材分章节,每一章节都有选择题、或有判断题、填空题、算法设计题及应用题,题型丰富多样,共五种类型题目。本学期已过去一半,相信你数据结构叶已经学得差不多了,是时候拿题来练练手了,如果你考研,更需要这份1800道题来巩固自己的基础及攻克重点难点。现在下载,不早不晚,越往后拖,越到后面,你身边的人就越卷,甚至卷得达到你无法想象的程度。我也是曾经遇到过这样的人,学习,练题,就要趁现在,不然到时你都不知道要刷数据结构题好还是高数、工数、大英,或是算法题?学完理论要及时巩固知识内容才是王道!记住!!!下载了来要答案(v:zywcv1220)。

通用跨域检索的泛化能力

12056通用跨域检索:跨类和跨域的泛化2* Soka Soka酒店,Soka-马上预订;1印度理工学院,Kharagpur,2印度科学学院,班加罗尔soumava2016@gmail.com,{titird,somabiswas} @ iisc.ac.in摘要在这项工作中,我们第一次解决了通用跨域检索的问题,其中测试数据可以属于在训练过程中看不到的类或域。由于动态增加的类别数量和对每个可能的域的训练的实际约束,这需要大量的数据,所以对看不见的类别和域的泛化是重要的。为了实现这一目标,我们提出了SnMpNet(语义Neighbourhood和混合预测网络),它包括两个新的损失,以占在测试过程中遇到的看不见的类和域。具体来说,我们引入了一种新的语义邻域损失,以弥合可见和不可见类之间的知识差距,并确保潜在的空间嵌入的不可见类是语义上有意义的,相对于其相邻的类。我们还在图像级以及数据的语义级引入了基于混�