zoukankan      html  css  js  c++  java
  • 加解密定义及实战

     
    加解密概念
    对称加密
    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
     
     
     

  • 相关阅读:
    520了,用32做个简单的小程序
    我要偷偷的学Python,然后惊呆所有人(第十三天)
    Python关于import的实验(10) 利用__init__.py文件将变量和包下的模块作为包的属性
    爬虫实战 如何爬取B站视频评论?
    【爬虫】对新笔趣阁小说进行爬取,保存和下载
    年轻就该多尝试,教你20小时Get一项新技能
    基于visual c++之windows核心编程代码分析(66)实现Windows服务的远程控制
    基于visual c++之windows核心编程代码分析(59)实现网络简单代理编程
    Windows Azure Traffic Manager的新的管理API
    现实世界的Windows Azure:采访Aidmatrix的交付副总裁Michael Ross
  • 原文地址:https://www.cnblogs.com/boosli/p/15237482.html
Copyright © 2011-2022 走看看