AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来
# 面向对象的方式 实现加密方法 from Crypto.Cipher import AES
from Crypto import Random
from binascii import b2a_hex, a2b_hex class My_Aes(): def __init__(self, key, mode = AES.MODE_CFB ):
self.key = self.check_key(key)
self.mode = mode
self.iv = Random.new().read(AES.block_size) def check_key(self, key):
"""
对秘钥进行类型检查
:param key:
:return:
"""
if isinstance(key, bytes):
assert len(key) in [16,24,32]
return key
elif isinstance(key, str):
assert len(key.encode()) in [16,24,36]
return key.encode()
else:
raise Exception('秘钥必须为str或者bytes类型,不能为{}'.format(type(key))) def encrypt(self, data):
aes = AES.new(self.key, self.mode, self.iv)
return b2a_hex(aes.encrypt(data)) def decrypt(self, data):
aes = AES.new(self.key, self.mode, self.iv)
print(aes.decrypt(a2b_hex(data))) if __name__ == '__main__':
aes = My_Aes('abcdefghhgfedcba')
data = aes.encrypt(b'hello world')
aes.decrypt(data) # rsa加密
import rsa
import binascii class rasData(): def __init__(self, rsa_n, rsa_e, data ):
self.rsa_n = int(rsa_n, 16)
self.rsa_e = int(rsa_e, 16)
self.data = data def rsa_en(self):
key = rsa.PublicKey(self.rsa_n, self.rsa_e)
data = rsa.encrypt(self.data.encode(), key)
return data, binascii.b2a_hex(data).decode() if __name__ == '__main__':
pubkey_n = '8d7e6949d411ce14d7d233d7160f5b2cc753930cabaaa'
pubkey_e = '10002'
data = '潭州学院'
file = rasData(pubkey_n, pubkey_e, data)
print(file.rsa_en())
AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来的更多相关文章
- AES和RSA混合加密技术在网络数据传输中的应用
原文:http://www.fx361.com/page/2017/0110/519967.shtml 摘要:文章通过分析和比较AES加密算法和RsA加密算法的实现过程和各自的特点, ...
- 前后端API交互数据加密——AES与RSA混合加密完整实例
前言 前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门:https://blog.csdn.net/ityouknow/article/details/80603617),文中讲到利用R ...
- WebSocket数据加密——AES与RSA混合加密
前言 之前在写“一套简单的web即时通讯”,写到第三版的时候没什么思路,正好微信公众号看到一篇讲API交互加密,于是就自己搞了一套AES与RSA混合加密,无意中产生应用在WebSocket想法,好在思 ...
- c++面向过程和面向对象-C++编译器是如何管理类和对象的
1,c++编译时如何区分对象调用类的方法? C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类.从计算机的角度,程序依然由数据段(栈区内存)和代 ...
- Jmeter——使用JSR223元件实现RSA登录加密
一.RSA加密简介 RSA加密是一种非对称加密.可以在不直接传递密钥的情况下,完成解密.这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险.是由一对密钥来进行加解密的过程,分别称为公钥和私 ...
- JS是面向过程、面向对象还是基于对象?面向对象的代码体现
一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...
- PHP面向过程和面向对象
php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...
- Net基础篇_学习笔记_第十一天_面向对象(面向过程与面向对象的区别/类的概念)
1.面向过程-----> 面向对象 面向过程:面向的是完成这件事儿的过程,强调的是完成这件事儿的动作. 把大象塞进冰箱里1.打开冰箱门2.把大象塞进去,亲下大象的屁股3.关闭冰箱门 孙全 瘦小 ...
- */美女镇楼/*>>>---PHP中的OOP-->面对过程与面对对象基础概念与内容--(封装、继承、多态)
前 言 OOP 学习了好久的PHP,今天来总结一下PHP中的重要成员OOP 1 面向过程&面向对象 1.专注于解决一个问题的过程.面向过程的最大特点,是由一个一个的函数去解决处理这 ...
随机推荐
- Invoker-n颜色涂m个珠子的项链
参考https://blog.csdn.net/anxdada/article/details/76862564. https://blog.csdn.net/baidu_35643793/artic ...
- Request.ServerVariables参数说明
Request.ServerVariables["SERVER_NAME"] '获取服务器IP Request.ServerVariables["HTTP_REFERER ...
- Delphi7连接MySql数据库-DBGrid控件显示数据
一个简单的Delphi7小程序,使用MySql数据库做简单查询,用DBGrid控件显示结果,实现过程如下: (1)在MySql中新建demouser表,插入记录用于测试. (2)在Delphi7中新建 ...
- easyui获取选中行上一行的数据
text: 'XX', iconCls: 'icon-ok', handler: function () { var rowI ...
- react native原生模块引用本地jar包
比如module目录结构是这样的: 然后libs中的目录是这样的: 只要在build.gradle中加入这段代码就行了 sourceSets { main { manifest.srcFile 'An ...
- jQuery-4.动画篇---自定义动画
jQuery中动画animate(上) 有些复杂的动画通过之前学到的几个动画函数是不能够实现,这时候就需要强大的animate方法了 操作一个元素执行3秒的淡入动画,对比一下2组动画设置的区别 $(e ...
- Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy
1 小数据池(节省内存) 只有数字和字符串中内存,储存在同一个内存地址中 数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了 2 编 ...
- Java中PO、DO、TO、DTO、 VO、 BO、POJO 、DAO的概念
本文系转载-原创@HollisChuang :http://www.hollischuang.com/archives/553 1.PO(persistant object) 持久对象 在 o/r ...
- Ubuntu19.04配置SS+pac非全局代理
1.先安装shadowsocks-qt5 sudo apt install shadowsocks-qt5 2.因为ss是sock5代理,而shell不支持socks5代理,只支持http/https ...
- NS3可视化及动画工具(PyViz和NetAnim)
一.PyViz安装 1.安装依赖包 sudo apt-get install python-dev python-pygraphviz python-kiwi python-pygoocanvas p ...