加解密定义及实战

 
加解密概念
对称加密
MD5加密
非对称加密RSA
测试开发工程师应用
为什么要加密解密?
加密:对信息进行加密可以保证信息在互联网上传输时不被人截获(能截获、但是由于加密看不白)
解密:服务器收到用户信息后,需要知道用户的真实信息,就需要把之前加密的内容进行解密操作。
如:禅道 登录抓包 百度登录抓包
 
 
对称加密算法又称传统加密算法。
加密和解密使用同一个密钥。加密解密过程:明文->密钥加密->密文,密文->密钥解密->明文
举例:
密钥:X
加密算法:每个字符+X
明文:Hello
密钥为 1时加密结果:Ifmmp
密钥为 2时加密结果:Jgnnq
对称加密注意事项:
密钥的保密工作非常重要
密钥要求定期更换
 
对称加密优缺点:
算法公开,计算量小,加密速度快,加密效率高
双方使用相同的钥匙,安全性得不到保证
经典加密算法有三种:
1. DES(Data Encryption Standard):数据加密标准(现在用的比较少,因为它的
加密强度不够,能够暴力破解)
2. 3DES:原理和DES几乎是一样的,只是使用3个密钥,对相同的数据执行三
次加密,增强加密强度。(缺点:要维护3个密钥,大大增加了维护成本)
3.AES(Advanced Encryption Standard):高级加密标准,目前美国国家安全局
使用的,苹果的钥匙串访问采用的就AES加密。是现在公认的最安全的加密方式,
是对称密钥加密中最流行的算法。
单密钥体制:
需要对加密和解密使用相同密钥的加密算法,由于其速度快,对称性加密通
常在消息发送方需要加密大量数据时使用,对称性加密也称为密钥加密。
所以对称加密体制不太安全,钥匙不能丢,一般用在后台加密,前端给密钥危险。
 
MD5加密的特点:
不可逆运算
对不同的数据加密的结果是定长的32位字符(不管文件多大都一样)
对相同的数据加密,得到的结果是一样的(也就是复制)。
抗修改性 : 信息“指纹”,对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别.
弱抗碰撞 : 已知原数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的.
强抗碰撞: 想找到两个不同数据,使他们具有相同的 MD5 值,是非常困难的
MD5 应用:
1、一致性验证:MD5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,就像每个人都有自己独一无二的指纹,MD5对任何文件产生一个独一无二的数字指纹。该MD5加密不安全、很容易破解
2、可以加个“盐”试试,“盐”就是一串比较复杂的字符串。加盐的目的是加强加密的复杂度,这么破解起来就更加麻烦,当然这个“盐”越长越复杂,加密后破解起来就越麻烦。如果“盐”泄漏出去就不安全
3、只使用md5加密是不行的,很容易被破解。常见的做法有:先对原串进行一些处理,比如先给它拼接一个字符串常量,再进行md5加密。即使对方解密,也获取不到原串。(加盐过程)
使用多种加密算法。比如先用md5加密,再对加密的结果使用其它加密算法进行加密。比如先使用md5加密,对加密的结果再次使用md5加密。这2种方式方式经常一起使用。
 
非对称加密RSA
简介:
1.对称加密算法又称现代加密算法。
2. 非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。
3. 非对称加密算法需要两个密钥:公开密钥(publickey) 和私有密(privatekey)
4. 公开密钥和私有密钥是一对
如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。
特点:
算法强度复杂,安全性依赖于算法与密钥。 加密解密速度慢。
与对称加密算法的对比: 对称加密只有一种密钥并且是非公开的,如果要解密就得让对方知道密钥。
非对称加密有两种密钥,其中一个是公开的。
 
实例理解:
我有两把锁和两把对应的钥匙:
私钥A、私锁B
公锁A、公钥B
私钥A可以开公锁A,公钥B可以开私锁B
公锁A和公钥B放到了门外,所有人都可以拿
私钥A和私锁B,我自己藏着不让人知道
 
你也有两把锁和两把对应的钥匙:
私钥C、私锁D
公锁C、公钥D
公锁C和公钥D放到了门外,所有人都可以拿
私钥C和私锁D,你自己藏着不让人知道
 
为了给你传递消息,我拿了你的公锁C来锁住我的消息,这时只有你能用私
钥C来打开查看消息。为了让你知道这个消息是我发的,而不是别人发的,我拿
了自己的私锁B,又在外面加了锁。
消息到你那以后,你先拿我的公钥B打开了我的私锁B,然后就看到了用你的公
锁C锁住的消息,因为只有你自己有私钥C,所以只有你才能看到里面的消息。
 
  
轮到你给我发消息了,你先拿我的公锁A锁住了消息,保证只有我能看到消
息,然后为了证明消息是你发的,你就拿了你的私锁D在外面又加了一把锁,这
把锁大家可用你的私钥D来开。
我收到消息后,去拿你的公钥D开了你外面的私锁D,然后用我的私钥A开了里
面的公锁A,然后我就可以看到里面的消息了。
 
RSA加密算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作,RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,截止2017年被普遍认为是最优秀的公钥方案之一。
 
 
 
1、算法本身不需要测试,因为黑客经过几十年都没破解过加密解密本身业务测试 == 比如 123 消息 发送 后台接收后是否能解密为123
2、一般加解密用 java c++等实现,不用python实现的原因是python加解密效率比较低,但python做自动化测试,接口测试、爬虫等非常方便
3、公司的加解密算法一般是一个 jar包,不需要测试人员自己写,公司用什么算
法,让开发把相应的jar包发给测试即可 一般名为 encrypt
 
python调用加解密工具包思路:
1、找到公司的加解密 源码、jar包 Encrypt ( .jks文件 )
2、方式一:调用java的源码、jar包去执行生成密文,然后复制给python需要的
地方使用(不好,用例不方便维护、手动做一个复制操作,没能实现自动化)
方式二:利用python调用java的源码、jar包去执行
学会:1、python如何执行java代码 2、如何把java源码打包成jar文件 3、应用Jpype 模块: 用来执行java代码的
Pip install jpype1
 
 
 

原文地址:https://www.cnblogs.com/boosli/p/15237482.html