美文网首页
对称加密与非对称加密

对称加密与非对称加密

作者: 大佬的上半生 | 来源:发表于2019-10-23 14:04 被阅读0次

加密

对称加密
image.png
  • 对称双方使用同一个密钥,使用加密算法配上合适的密钥来加密,解密时使用加密过程的完全逆过程配合密钥来进行解密
  • 经典算法:DES,AES
  • 优点:加密计算小,速度快,适合对大量数据进行加密的场景
  • 缺点:密钥传输泄露问题
栗子:AES
  • AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。
AES加密
public static String encrypt(String text) throws Exception {
    // 私钥 AES固定格式为128/192/256bits.即:16/24/32bytes。DES固定格式为128bits,即8bytes。
    String key = "aaaaaaaaaaaaaaaa";
    // 初始化向量参数,AES 为16bytes. DES 为8bytes
    String iv ="bbbbbbbbbbbbbbbb"; 
    // 两个参数,第一个为私钥字节数组, 第二个为加密方式AES或者DES
    Key keySpec = new SecretKeySpec(key.getBytes(), "AES"); 
    IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
    // 实例化加密类,参数为加密方式,要写全
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    // 初始化,此方法可以采用三种方式,按服务器要求来添加。(1)无第三个参数(2)第三个参数为SecureRandom
    //(3)采用此代码中的IVParameterSpec
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);// random = new SecureRandom();中random对象,随机数。(AES不可采用这种方法)
    // cipher.init(Cipher.ENCRYPT_MODE, keySpec);
    // SecureRandom random = new SecureRandom();
    // cipher.init(Cipher.ENCRYPT_MODE, keySpec, random);
    byte[] bytes = cipher.doFinal(text.getBytes());// 加密操作,返回加密后的字节数组,然后需要编码。主要编解码方式有Base64, HEX, UUE,
    // 7bit等等。此处看服务器需要什么编码方式
    String result = Base64.encodeToString(bytes, Base64.DEFAULT);
    return result;}
AES解密
public static String decrypt(String text) throws Exception {
    String keySpec = "aaaaaaaaaaaaaaaa";
    String iv = "bbbbbbbbbbbbbbbb";
    byte[] textBytes = Base64.decode(text.getBytes(), Base64.DEFAULT);
    IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
    Key key = new SecretKeySpec(keySpec.getBytes(), "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.DECRYPT_MODE, key, ivSpec); // 与加密时不同MODE:Cipher.DECRYPT_MODE
    String result = cipher.doFinal(textBytes);
    return result; }
非对称加密
  • 原理:使用公钥对数据进行加密得到密文;使用私钥解密得到明文
image.png

应用场景:

1.数字签名验证
使用私钥签名,发送签名数据和原数据,采用公钥验证,如果验证后数据等于发过来的原数据则正确,反之

image.png

加密签名:发送方使用对方公钥加密得到密文,在自己的私钥签名,接收方使用自己的私钥解密,用公钥验证

image.png
  • 经典算法: RSA,DSA
BASE64
  • 将二进制数据转换成由64个字符组成的字符串编码算法
  • 用途:让原数据具有字符串所具有的的特性,如可以放在URL中传输,可以保存到文本文件,可以通过普通的聊天软件进行文本传输
  • 把原本人眼可以读懂的字符串变成读不懂的字符串,降低偷窥风险
压缩与解压缩
  • 压缩:把数据换一种方式来存储,以减少存储空间
  • 解压缩:把压缩后的数据还原成原先的数据,以便使用
  • 常见压缩算法:MP3,JEPG,DEELATE

HASH

  • 定义:把任意数据转换成指定大小的范围(通常很小)的数据

  • 左右:摘要,数字指纹

  • 经典算法:MD5,SHA1,SHA256

  • 实质用途

    • 数据完整性验证
    • 快速查找
    • 隐私保护
加上hash减小签名数据

相关文章

  • Web开发必须了解的密码学技术

    对称加密与非对称加密 按照密钥的使用形式,加密算法可以分为对称加密和非对称加密(又叫公钥加密)。对称加密在加密和解...

  • 4-对称加密

    对称加密与非对称加密 按照密钥的特征不同, 密码体制分为对称密码体制和非对称密码体制。对称加密和非对称加密都是可逆...

  • kotlin版本RSA非对称加密解密与分段加密解密

    基于kotlin语言的RSA非对称加密解密与分段加密解密 RSA非对称加密 RSA非对称加密的具体算法与来源我就不...

  • https交互流程简述

    https使用到的加密算法 对称加密非对称加密 通过非对称加密,交换对称加密的密钥,之后采用对称加密传输非对称加密...

  • 第四篇:非对称加密及RSA加密算法

    目录一、非对称加密 1、什么是非对称加密? 2、对称加密的工作过程 3、非对称加密的优点 4、非对称加密的不足二、...

  • 学习笔记:HTTPS协议原理

    对称加密和非对称加密 加密分两种,对称加密和非对称加密。对称加密是指加密的双方使用同一个密钥加密和解密数据。非对称...

  • 凯撒挪移码

    密码学中我所知道的加密算法分为对称加密和非对称加密,其中对称加密与非对称加密相比较为简单,我将从对称加密开始讲...

  • Https加密原理图解

    1. 为什么要用对称加密+非对称加密? 结合对称加密的快和非对称加密的安全。 2. 为什么不能只用非对称加密? 如...

  • ios开发之证书和签名机制(一)

    非对称加密和摘要 1、非对称加密的特性和用法 1) 非对称加密算法(RSA):非对称加密算法指加密秘钥和解密秘钥是...

  • 加密算法的理解

    加密算法按类型分类: 对称加密、非对称加密、散列算法 对称加密: 加密双方都持有加密算法及密钥 非对称加密: 加密...

网友评论

      本文标题:对称加密与非对称加密

      本文链接:https://www.haomeiwen.com/subject/qtckvctx.html