java encrypt 加密种类

1,pom

        <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.1.0</version></dependency>

2,非对称加密

package club.mydlq.encrypt;import cn.hutool.core.codec.Base64;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import java.io.UnsupportedEncodingException;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;/*** 非对称加密*/
public class AsymmetricEncryptionExample {/*** RSA 公钥加密,私钥解密** @param data             加密数据* @param privateKeyString 私钥字符串* @param publicKeyString  公钥字符串* @throws UnsupportedEncodingException*/public static void rsaEncrypt1(String data, String privateKeyString, String publicKeyString) throws UnsupportedEncodingException {// 将公、私钥字符串转换成公、私钥对象PrivateKey privateKey = SecureUtil.generatePrivateKey("RSA", Base64.decode(privateKeyString));PublicKey publicKey = SecureUtil.generatePublicKey("RSA", Base64.decode(publicKeyString));// 获取字符串byte数组byte[] bytes = data.getBytes("UTF-8");// 创建 RSA 对象RSA rsa = new RSA();// 设置公钥,然后执行公钥加密rsa.setPublicKey(publicKey);byte[] encrypt = rsa.encrypt(bytes, KeyType.PublicKey);// 设置私钥,然后执行私钥解密rsa.setPrivateKey(privateKey);byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);// 输出解密的内容System.out.println("公钥加密,私钥解密,解密内容:" + new String(decrypt));}/*** RSA 私钥加密,公钥解密** @param data             加密数据* @param privateKeyString 私钥字符串* @param publicKeyString  公钥字符串* @throws UnsupportedEncodingException*/public static void rsaEncrypt2(String data, String privateKeyString, String publicKeyString) throws UnsupportedEncodingException {// 将公、私钥字符串转换成公、私钥对象PrivateKey privateKey = SecureUtil.generatePrivateKey("RSA", Base64.decode(privateKeyString));PublicKey publicKey = SecureUtil.generatePublicKey("RSA", Base64.decode(publicKeyString));// 获取字符串byte数组byte[] bytes = data.getBytes("UTF-8");// 创建 RSA 对象RSA rsa = new RSA();// 设置私钥,然后执行私钥加密rsa.setPrivateKey(privateKey);byte[] encrypt = rsa.encrypt(bytes, KeyType.PrivateKey);// 设置公钥,然后执行公钥解密rsa.setPublicKey(publicKey);byte[] decrypt = rsa.decrypt(encrypt, KeyType.PublicKey);// 输出解密的内容System.out.println("私钥加密,公钥解密,解密内容:" + new String(decrypt));}public static void main(String[] args) throws UnsupportedEncodingException {/* 生成钥匙对 */KeyPair pair = SecureUtil.generateKeyPair("RSA");PrivateKey privateKey = pair.getPrivate();PublicKey publicKey = pair.getPublic();// 将公钥私钥转换成 Base64 字符串String privateKeyString = Base64.encode(privateKey.getEncoded());String publicKeyString = Base64.encode(publicKey.getEncoded());/* 设置要加密的内容 */String data = "测试数据";/* RSA 公钥加密,私钥解密 */rsaEncrypt1(data, privateKeyString, publicKeyString);/* RSA 私钥加密,公钥解密 */rsaEncrypt2(data, privateKeyString, publicKeyString);}}

3,摘要加密

package club.mydlq.encrypt;import cn.hutool.crypto.digest.DigestUtil;/*** 摘要加密*/
public class DigesterEncryption {/*** MD2 加密* @param data 加密内容*/public static void md2Encrypt(String data) {String md2String = DigestUtil.md5Hex(data);System.out.println("MD2加密后的字符串:" + md2String);}/*** MD5 加密* @param data 加密内容*/public static void md5Encrypt(String data) {String md5String = DigestUtil.md5Hex(data);System.out.println("MD5加密后的字符串:" + md5String);}/*** SHA-1 加密* @param data 加密内容*/public static void sha1Encrypt(String data) {String sha1String = DigestUtil.sha1Hex(data);System.out.println("SHA1加密后的字符串:" + sha1String);}/*** SHA-256 加密* @param data 加密内容*/public static void sha256Encrypt(String data) {String sha256String = DigestUtil.sha256Hex(data);System.out.println("SHA256加密后的字符串:" + sha256String);}public static void main(String[] args) {/* 设置要加密的内容 */String data = "测试数据";/* MD2加密 */md2Encrypt(data);/* MD5加密 */md5Encrypt(data);/* SHA1加密 */sha1Encrypt(data);/* SHA256加密 */sha256Encrypt(data);}}

4,对称加密

package club.mydlq.encrypt;import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
import java.io.UnsupportedEncodingException;/*** 对称加密*/
public class SymmetricalEncryptionExample {/*** AES 加密、解密** @param data 加密数据*/public static void aesEncrypt(String data, String secret) {// 随机生成密钥byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue(), secret.getBytes()).getEncoded();// 创建 AES 对象SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);// 加密String encrypt = aes.encryptHex(data);// 解密String decrypt = aes.decryptStr(encrypt);System.out.println("AES 加密后的串:" + encrypt + "AES 解密的数据:" + decrypt);}/*** DES 加密、解密** @param data 加密数据*/public static void desEncrypt(String data, String secret) {// 随机生成密钥byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue(), secret.getBytes()).getEncoded();// 创建 DES 对象SymmetricCrypto des = new SymmetricCrypto(SymmetricAlgorithm.DES, key);// 加密String encrypt = des.encryptHex(data);// 解密String decrypt = des.decryptStr(encrypt);System.out.println("DES 加密后的串:" + encrypt + "DES 解密的数据:" + decrypt);}/*** DESede 加密、解密** @param data 加密数据*/public static void desedeEncrypt(String data, String secret) {// 随机生成密钥byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DESede.getValue(), secret.getBytes()).getEncoded();// 创建 DESede 对象SymmetricCrypto desede = new SymmetricCrypto(SymmetricAlgorithm.DESede, key);// 加密String encrypt = desede.encryptHex(data);// 解密String decrypt = desede.decryptStr(encrypt);System.out.println("DESede 加密后的串:" + encrypt + "DESede 解密的数据:" + decrypt);}/*** Blowfish 加密、解密** @param data 加密数据*/public static void blowfishEncrypt(String data, String secret) {// 随机生成密钥byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.Blowfish.getValue(), secret.getBytes()).getEncoded();// 创建 Blowfish 对象SymmetricCrypto blowfish = new SymmetricCrypto(SymmetricAlgorithm.Blowfish, key);// 加密String encrypt = blowfish.encryptHex(data);// 解密String decrypt = blowfish.decryptStr(encrypt);System.out.println("Blowfish 加密后的串:" + encrypt + "Blowfish 解密的数据:" + decrypt);}/*** RC2 加密、解密** @param data 加密数据*/public static void rc2Encrypt(String data, String secret) {// 随机生成密钥byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.RC2.getValue(), secret.getBytes()).getEncoded();// 创建 RC2 对象SymmetricCrypto rc2 = new SymmetricCrypto(SymmetricAlgorithm.RC2, key);// 加密String encrypt = rc2.encryptHex(data);// 解密String decrypt = rc2.decryptStr(encrypt);System.out.println("RC2 加密后的串:" + encrypt + "RC2 解密的数据:" + decrypt);}/*** ARCFOUR 加密、解密** @param data 加密数据*/public static void arcfourEncrypt(String data, String secret) {// 随机生成密钥byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.ARCFOUR.getValue(), secret.getBytes()).getEncoded();// 创建 ARCFOUR 对象SymmetricCrypto arcfour = new SymmetricCrypto(SymmetricAlgorithm.ARCFOUR, key);// 加密String encrypt = arcfour.encryptHex(data);// 解密String decrypt = arcfour.decryptStr(encrypt);System.out.println("ARCFOUR 加密后的串:" + encrypt + "ARCFOUR 解密的数据:" + decrypt);}public static void main(String[] args) throws UnsupportedEncodingException {/* 设置要加密的内容 */String data = "测试数据";String secret1 = "abcdefghijklmnop";String secret2 = "abcdefghijklmnopqrstuvwx";/* AES加密 */aesEncrypt(data, secret1);/* DES加密 */desEncrypt(data, secret1);/* RC2加密 */rc2Encrypt(data, secret1);/* Blowfish加密 */blowfishEncrypt(data, secret1);/* ARCFOUR加密 */arcfourEncrypt(data, secret1);/* DESede加密 */desedeEncrypt(data, secret2);}}

5,签名

package club.mydlq.encrypt;import cn.hutool.core.codec.Base64;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.Sign;
import cn.hutool.crypto.asymmetric.SignAlgorithm;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;/*** 签名*/
public class SignExample {/*** RSA 私钥签名** @param data             签名数据* @param privateKeyString 私钥字符串*/public static String rsaSign(String data, String privateKeyString) {// 将私钥字符串转换成私钥对象PrivateKey privateKey = SecureUtil.generatePrivateKey("RSA", Base64.decode(privateKeyString));// 设置签名对象以及加密算法Sign sign = SecureUtil.sign(SignAlgorithm.MD5withRSA);// 设置私钥,然后执行签名sign.setPrivateKey(privateKey);byte[] bytes = sign.sign(data.getBytes());// 将签名转换为 Base64 字符串,然后返回return Base64.encode(bytes);}/*** RSA 公钥验签** @param data            签名数据* @param publicKeyString 公钥* @param signString      签名* @return 是否验证成功*/public static boolean rsaSignVerify(String data, String publicKeyString, String signString) {// 将公钥字符串转换成公钥对象PublicKey publicKey = SecureUtil.generatePublicKey("RSA", Base64.decode(publicKeyString));// 设置签名对象以及加密算法Sign sign = SecureUtil.sign(SignAlgorithm.MD5withRSA);// 将签名字符串转换成 byte 数组byte[] bytes = Base64.decode(signString);// 设置公钥,然后执行验签sign.setPublicKey(publicKey);return sign.verify(data.getBytes(), bytes);}public static void main(String[] args) {/* 生成钥匙对 */KeyPair pair = SecureUtil.generateKeyPair("RSA");PrivateKey privateKey = pair.getPrivate();PublicKey publicKey = pair.getPublic();// 将公钥私钥转换成 Base64 字符串String privateKeyString = Base64.encode(privateKey.getEncoded());String publicKeyString = Base64.encode(publicKey.getEncoded());/* 设置要加密的内容 */String data = "测试数据";/* RSA 私钥签名,公钥验签 */String sign = rsaSign(data, privateKeyString);boolean verify = rsaSignVerify(data, publicKeyString, sign);System.out.println("签名验证结果:" + verify);}}

java encrypt 加密种类相关推荐

  1. java AES 加密和linux解密

    java AES 加密: package app;import static java.nio.charset.StandardCharsets.US_ASCII; import static jav ...

  2. java安全——加密

    [0]README 1)本文文字描述转自 core java volume 2,旨在学习 java安全--加密 的基础知识: 2)java 安全性的第二个重要方面是加密. 3)认证对于代码签名已足够了 ...

  3. java string 加密_java字符串加密解密

    java字符串加密解密 try { String test = "123456789@fdj.com"; EncryptionDecryption des = new Encryp ...

  4. java字符串加密解密

    2019独角兽企业重金招聘Python工程师标准>>> java字符串加密解密try {String test = "123456789@fdj.com";Enc ...

  5. java对称加密与非对称加密

    java对称加密与非对称加密 加密方式大致分为两种,对称加密和非对称加密.对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secre ...

  6. C#实现带盐值加密,适配JAVA Shiro加密

    C#实现带盐值加密,适配JAVA Shiro加密 前言 核心代码 Java代码 C#代码 注意 前言 工业领域上位机软件与管理系统通常使用不同编程语言实现,比如我们的上位机软件通常使用C#,而MES. ...

  7. Java DES 加密解密

    1.加密的相关概念 1.明文:被隐蔽的消息称作明文(plaintext) 2.密文:隐蔽后的消息称作密文(ciphertext) 3.加密:将明文变换成密文的过程称作加密(encryption) 4. ...

  8. java AES加密 前端CryptoJS AES解密

    问题 java加密生成base64位字符串,前端使用Java提供的密钥,前端无法解密出数据. java后台加密使用AES/ECB/PKCS5Padding 数据准备: 一个固定秘钥,互相约定 B7E1 ...

  9. java偶校验计算代码_191120_02 Java常用加密校验转换算法汇总

    Java常用加密校验转换算法汇总 作者:邵发 官网:http://afanihao.cn/java 本文是Java学习指南系列教程的官方配套文档.内容介绍Java里的常用算法的使用,包含转换Hex / ...

最新文章

  1. PHP(一) 开发环境搭建
  2. 练习作品13:电子试卷自动生成软件
  3. 单体应用 适合采用 dapr 构建吗?
  4. 虚幻4毛发系统_虚幻引擎复活!苹果与Epic对决,有哪些游戏险些中枪?
  5. PID控制器改进笔记之四:改进PID控制器之设定值响应
  6. 第一个mybatis项目(IDEA+MAVEN+Junit)
  7. 修改鼠标手形 闪烁 在填写文字内容后也一直在闪烁
  8. 常见掌握类库与工具体系图 艾提拉总结 Atitit 文档资料处理重要类库与工具体系树 Configuration yml xml jsoup  Net apache commons net
  9. 为什么选择红黑树作为底层实现
  10. 老师必备的数学几何绘图软件,赶紧收藏!
  11. 快速从B站下载视频到本地(无需安装软件)
  12. Coder中的Templates
  13. vue项目图标处理工具
  14. [论文阅读] SASA: Semantics-Augmented Set Abstraction for Point-based 3D Object Detection
  15. MFC 菜单栏添加方法
  16. 设计模式六大原则详解
  17. Pixelmator for Mac(图像编辑器)
  18. Codeforces 1146G Zoning Restrictions
  19. xshell进入桌面_xshell中启动linux图形界面
  20. matlab将一列数分割为若干组,将数据拆分为不同组并计算统计量

热门文章

  1. LeetCode | 循环队列的爱情【恋爱法则——环游世界】
  2. CAD字体显示错乱问题解决方案
  3. android 自动对焦pk,Android拍照机皇大PK i9100对决LT18i
  4. javascript删除数组中的几种方式
  5. 内网渗透之内网主机信息收集
  6. git 卡住推不上去
  7. 支付宝上线拼团功能 新零售线下商业地理技术运用时代来临!
  8. 从入门到精通Uboot(1.Uboot概括)
  9. 我的hadoop集群的一些问题
  10. webdriver配置