美文网首页
对称加密算法-简单密钥之五

对称加密算法-简单密钥之五

作者: 喏喏2021 | 来源:发表于2021-12-09 15:25 被阅读0次

1. 背景

细心的读者会发现,前面介绍的对称加密算法中,密钥的长度是固定位数的,但现实一般输入密码时都是
一些长度不太长的密码串,这时,我们可以使用一些随机数和原密码杂凑后,生成真正的密钥,在最终使用时,
我们不仅需要提供原始的密码串,还同时需要随机数信息(类似USB密码器),这两者结合才能真正进行解码。

  • 下面介绍的算法,它底层的实现,仍是标准的对称加密算法

2. 示例

密文 = 运算(原文,简单密码,随机密钥)

//添加算法
Security.addProvider(new BouncyCastleProvider());
String content = "abc"; //加密内容
String encryptKey = "12345678";  //简单密码 

//生成的随机口令密钥,用于后面的杂凑
byte[] salt = SecureRandom.getInstanceStrong().generateSeed(16);

//加密
PBEKeySpec keySpec = new PBEKeySpec(encryptKey.toCharArray());
SecretKeyFactory skeyFactory = SecretKeyFactory.getInstance("PBEwithSHA1and128bitAES-CBC-BC");
SecretKey key = skeyFactory.generateSecret(keySpec);
PBEParameterSpec pbeps = new PBEParameterSpec(salt,500);
Cipher cipher = Cipher.getInstance("PBEwithSHA1and128bitAES-CBC-BC");       
cipher.init(Cipher.ENCRYPT_MODE, key,pbeps); //加密模式
byte[] encryptBytes = cipher.doFinal(content.getBytes("UTF-8")); //得到密文字节数组
System.out.println("encrypt data:" + Base64.getEncoder().encodeToString(encryptBytes));
//8xxrL9E+A0VMXCoK666c8A==

//解密
PBEKeySpec keySpec1 = new PBEKeySpec(encryptKey.toCharArray());
SecretKeyFactory skeyFactory1 = SecretKeyFactory.getInstance("PBEwithSHA1and128bitAES-CBC-BC");
SecretKey key1 = skeyFactory1.generateSecret(keySpec1);
PBEParameterSpec pbeps1 = new PBEParameterSpec(salt,500);
Cipher cipher1 = Cipher.getInstance("PBEwithSHA1and128bitAES-CBC-BC");      
cipher1.init(Cipher.DECRYPT_MODE, key1,pbeps1); //解密模式
byte[] decryptBytes1 = cipher1.doFinal(encryptBytes); //得到原文字节数组
System.out.println("decrypt data:" + new String(decryptBytes1, "UTF-8"));
//abc

相关文章

  • 1. 常用的加密算法

    常用的加解密算法分三大类:非对称密钥加密算法、对称密钥加密算法、Hash加密算法 非对称密钥加密算法常见算法:RS...

  • 非对称加密的简单了解

    非对称加密的简单了解 1 概念 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privat...

  • 对称加密算法-简单密钥之五

    1. 背景 细心的读者会发现,前面介绍的对称加密算法中,密钥的长度是固定位数的,但现实一般输入密码时都是一些长度不...

  • [ 非对称性加密 ] 不好意思 我需要两个秘钥

    何为非对称性加密? 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(pr...

  • 加解密算法-RSA

    概述 RSA是"非对称加密算法",非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priva...

  • JAVA实现对称加密

    对称加密算法 加密密钥 = 解密密钥(完全对称的) 初等加密算法 DES3DES AES PBE IDEA 对称加...

  • IOS 加密

    加密算法 首先了解一下加密算法,常见的加密算法可以分成三类,对称密钥加密、公开密钥加密、散列函数。 对称密钥加密 ...

  • iOS数据传输安全

    1、对称加密算法 对称加密算法的特点是加密密钥和解密密钥是同一把密钥K,且加解密速度快,典型的对称加密算法有DE...

  • 对称加密

    一. 对称加密算法介绍 对称加密方式: 明文通过密钥加密得到密文。 密文通过密钥解密得到明文。 常见的对称加密算法...

  • 对称加密算法

    对称加密算法,又称密钥加密算法、单密钥算法、共享密钥算法,英文名Symmetric Encryption Algo...

网友评论

      本文标题:对称加密算法-简单密钥之五

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