加密方式
时间:2019-09-16
本文章向大家介绍加密方式,主要包括加密方式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. Hash加密
对明文进行Hash加密,得到密文,但是密文不能解密为明文。
例如:Md5 sha1等
2. 对称加密
使用密钥,对明文进行加密,得到密文
使用密钥,对密文进行解密,得到明文
例如 AES
3. 非对称加密
有密钥和公钥。
公钥是所有人都可以看到的。
密钥只有自己拥有。
使用公钥,对明文进行加密,得到密文。
使用密钥,对密文进行解密,得到明文。
例如RSA
4.RSA算法
1.生成公钥和密钥
安装openssl
yum install openssl生成私钥
openssl genrsa -out private.pem 1024
- genrsa 表示使用rsa算法
- -out 表示输出到文件
- 1024 表示私钥的长度
生成公钥
openssl rsa -in private.pem -pubout -out public.pem
- private.pem 是私钥的文件地址
2. 加密和解密
1.公钥加密,私钥解密
from M2Crypto import RSA
msg = 'aaaa-aaaa'
rsa_pub = RSA.load_pub_key('public.pem')
rsa_pri = RSA.load_key('private.pem')
print '公钥加密'
en_msg=rsa_pub.public_encrypt(msg,RSA.pkcs1_padding)
en_msg64=en_msg.encode('base64')
print '密文base64',en_msg64
print '私钥解密'
de_msg=rsa_pri.private_decrypt(en_msg,RSA.pkcs1_padding)
print '明文',de_msg
这个用于加密传输的数据。例如A用公钥加密信息,传送给B,只要B有私钥,才能解密。
2.私钥加密,公钥解密
print '###################################'
print '私钥加密'
en_msg=rsa_pri.private_encrypt(msg, RSA.pkcs1_padding)
en_msg64=en_msg.encode('base64')
print '密文base64',en_msg64
print '公钥解密'
de_msg=rsa_pub.public_decrypt(en_msg,RSA.pkcs1_padding)
print '明文',de_msg
这个用于生成数字签名。也就是证明数据是私钥拥有者发送的,而且未被修改。
例如
- B对发送给A的数据DATA,进行hash加密,得到HASH,
- B使用私钥对HASH加密,得到EN_HASH(这个就是数字签名),
- B发送DATA和EN_HASH给A
- A使用公钥解密EN_HASH,如果成功,表示这个数据是B发送的,否则就不是
- A对DATA进行hash加密,得到HASH1,如果HASH1和HASH相同,表示DATA没有被修改,否则就是修改了。
由于所有人都有公钥,所有人都能解密,所以如果这个方法不能用来加密数据。
未经允许,请不要转发
原文地址:https://www.cnblogs.com/Xjng/p/11530927.html
- 红黑树算法
- dedecms如何调用当前栏目的子栏目及子栏目文章
- HTML之marquee(文字滚动)详解
- Tarjan算法
- Jquery闪烁提示特效
- mstsc 远程序桌面登录的 c#开发
- 突然顿悟的Javascript中的this
- 解决Electron加载带jquery的项目报错问题
- dedecms利用addfields body在首页调用文章内容
- 如何设置dedecms自定义表单必填项?
- 如何用<dl>标签做表格而不用table标签
- Gulp使用指南
- Gulp Error: Cannot find module 'jshint/src/cli'
- 自学如何使用Python和Keras构建你自己专属的AlphaZero系统
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Hadoop【单机安装-测试程序WordCount】
- MySQL Shell转储和加载第4部分:转储实例和模式
- 【创建模式】--工厂模式
- 【创建模式】--Singleton
- Mapreduce 历史服务 配置启动查看
- Yarn 的日志聚集功能配置使用
- HDFS 的垃圾回收配置
- 配置SSH无密码登录
- OpenCV学习一《Linux下安装OpenCV》
- InnoDB的数据锁–第1部分“简介”
- Kafka中的再均衡
- 基础教程 | Tomcat 中使用 Jenkins
- GSoC: GitHub Checks API 项目第三阶段总结
- Sql注入基础_mysql注入
- WEB 安全学习 一、mysql 注入漏洞