JAVA对称加密算法PBE定义与用法实例分析
程序员文章站
2022-04-16 19:17:21
本文实例讲述了java对称加密算法pbe定义与用法。分享给大家供大家参考,具体如下:
一 aes、des和3des在使用上比较一致
二 pbe算法优点
三 p...
本文实例讲述了java对称加密算法pbe定义与用法。分享给大家供大家参考,具体如下:
一 aes、des和3des在使用上比较一致
二 pbe算法优点
三 pbe介绍
1、pbe:password based encryption 基于口令加密。通过加salt来增强安全性。
2、对已有算法的包装
3、jdk和bc的实现
4、通过加salt来增强安全性
四 常见算法
五代码实现
package com.imooc.security.pbe; import java.security.key; import java.security.securerandom; import javax.crypto.cipher; import javax.crypto.secretkeyfactory; import javax.crypto.spec.pbekeyspec; import javax.crypto.spec.pbeparameterspec; import org.apache.commons.codec.binary.base64; public class imoocpbe { private static string src = "cakin24 security pbe"; public static void main(string[] args) { jdkpbe(); } public static void jdkpbe() { try { //初始化盐 securerandom random = new securerandom(); byte[] salt = random.generateseed(8); //口令与密钥 string password = "cakin24"; pbekeyspec pbekeyspec = new pbekeyspec(password.tochararray()); secretkeyfactory factory = secretkeyfactory.getinstance("pbewithmd5anddes"); key key = factory.generatesecret(pbekeyspec); //加密 pbeparameterspec pbeparameterspec = new pbeparameterspec(salt, 100); cipher cipher = cipher.getinstance("pbewithmd5anddes"); cipher.init(cipher.encrypt_mode, key, pbeparameterspec); byte[] result = cipher.dofinal(src.getbytes()); system.out.println("jdk pbe encrypt : " + base64.encodebase64string(result)); //解密 cipher.init(cipher.decrypt_mode, key, pbeparameterspec); result = cipher.dofinal(result); system.out.println("jdk pbe decrypt : " + new string(result)); } catch (exception e) { e.printstacktrace(); } } }
六 实现效果
jdk pbe encrypt : ukxiqwmtrnbpj1aytggwmpswslplel5x
jdk pbe decrypt : cakin24 security pbe
七 应用场景
ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:
文字在线加密解密工具(包含aes、des、rc4等):
md5在线加密工具:
http://tools.jb51.net/password/createmd5password
在线散列/哈希算法加密工具:
在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:
在线sha1/sha224/sha256/sha384/sha512加密工具: