java怎么加密
1、MD5(Message Digest Algorithm)加密算法
是一种单向加密算法,只能加密不能解密,示例
/** * MD5简单加密 * @param content 加密内容 * @return String */ public static String md5Encrypt(final String content) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance(ALGORITHM_MD5); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // md5.update(text.getBytes()); //digest()最后返回md5 hash值,返回值为8位字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符 //BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 BigInteger digest = new BigInteger(md5.digest(content.getBytes())); //32位 return digest.toString(16); }
2、BASE64进行加密/解密
通常用作对二进制数据进行加密,示例
/** * base64加密 * @param content 待加密内容 * @return byte[] */ public static byte[] base64Encrypt(final String content) { return Base64.getEncoder().encode(content.getBytes()); } /** * base64解密 * @param encoderContent 已加密内容 * @return byte[] */ public static byte[] base64Decrypt(final byte[] encoderContent) { return Base64.getDecoder().decode(encoderContent); }
3、DES(Data Encryption Standard)对称加密/解密
数据加密标准算法,和BASE64最明显的区别就是有一个工作密钥,该密钥既用于加密、也用于解密,并且要求密钥是一个长度至少大于8位的字符串,示例
/** * DES加密 * @param key 秘钥key * @param content 待加密内容 * @return byte[] */ public static byte[] DESEncrypt(final String key, final String content) { return processCipher(content.getBytes(), getSecretKey(key), Cipher.ENCRYPT_MODE , ALGORITHM_DES); } /** * DES解密 * @param key 秘钥key * @param encoderContent 已加密内容 * @return byte[] */ public static byte[] DESDecrypt(final String key, final byte[] encoderContent) { return processCipher(encoderContent, getSecretKey(key), Cipher.DECRYPT_MODE, ALGORITHM_DES); }
4、RSA非对称加密/解密
非对称加密算法的典型代表,既能加密、又能解密。和对称加密算法比如DES的明显区别在于用于加密、解密的密钥是不同的。使用RSA算法,只要密钥足够长(一般要求1024bit),加密的信息是不能被破解的。示例
/** * RSA加密 * @param content 待加密内容 * @return byte[] */ public static byte[] RSAEncrypt(final String content) { return processCipher(content.getBytes(), keyPair.getPrivate(), Cipher.ENCRYPT_MODE , ALGORITHM_RSA); } /** * RSA解密 * @param encoderContent 已加密内容 * @return byte[] */ public static byte[] RSADecrypt(final byte[] encoderContent) { return processCipher(encoderContent, keyPair.getPublic(), Cipher.DECRYPT_MODE, ALGORITHM_RSA); }
5、SHA(Secure Hash Algorithm,安全散列算法)
数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域,示例
/** * SHA加密 * @param content 待加密内容 * @return String */ public static String SHAEncrypt(final String content) { try { MessageDigest sha = MessageDigest.getInstance(ALGORITHM_SHA); byte[] sha_byte = sha.digest(content.getBytes()); StringBuffer hexValue = new StringBuffer(); for (byte b : sha_byte) { //将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作,转换为int类型的正整数。 String toHexString = Integer.toHexString(b & 0xff); hexValue.append(toHexString.length() == 1 ? "0" + toHexString : toHexString); } return hexValue.toString(); // StringBuffer hexValue2 = new StringBuffer(); // for (int i = 0; i < sha_byte.length; i++) { // int val = ((int) sha_byte[i]) & 0xff; // if (val < 16) { // hexValue2.append("0"); // } // hexValue2.append(Integer.toHexString(val)); // } // return hexValue2.toString(); } catch (Exception e) { e.printStackTrace(); } return ""; }
6、HMAC(Hash Message Authentication Code,散列消息鉴别码)
使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证,示例
/** * HMAC加密 * @param key 给定秘钥key * @param content 待加密内容 * @return String */ public static byte[] HMACEncrypt(final String key, final String content) { try { SecretKey secretKey = new SecretKeySpec(key.getBytes(), ALGORITHM_MAC); Mac mac = Mac.getInstance(secretKey.getAlgorithm()); //初始化mac mac.init(secretKey); return mac.doFinal(content.getBytes()); } catch (Exception e) { e.printStackTrace(); } return null; }
测试代码:
public static void main(String[] args) { //md5简单加密 String text = "i am text"; System.out.println(EnDecoderUtil.md5Encrypt(text)); //base64进行加密解密,通常用作对二进制数据进行加密 byte[] base64Encrypt = EnDecoderUtil.base64Encrypt("123456789"); String toHexString = HexUtils.toHexString(base64Encrypt); System.out.println(toHexString); byte[] base64Decrypt = EnDecoderUtil.base64Decrypt(base64Encrypt); System.out.println(new String(base64Decrypt)); //DES对称加密/解密 //要求key至少长度为8个字符 String key = "123456789"; //加密 byte[] encode_bytes = EnDecoderUtil.DESEncrypt(key, "Hello, DES"); System.out.println(Base64.getEncoder().encodeToString(encode_bytes)); //解密 byte[] decode_bytes = EnDecoderUtil.DESDecrypt(key, encode_bytes); System.out.println(new String(decode_bytes)); //RSA //数据使用私钥加密 byte[] en_byte = EnDecoderUtil.RSAEncrypt("Hi, RSA"); System.out.println(Base64.getEncoder().encodeToString(en_byte)); //用户使用公钥解密 byte[] de_byte = EnDecoderUtil.RSADecrypt(en_byte); System.out.println(new String(de_byte)); //服务器根据私钥和加密数据生成数字签名 byte[] sign_byte = EnDecoderUtil.getSignature(en_byte); System.out.println(Base64.getEncoder().encodeToString(sign_byte)); //用户根据公钥、加密数据验证数据是否被修改过 boolean verify_result = EnDecoderUtil.verifySignature(en_byte, sign_byte); System.out.println(verify_result); //SHA String sha = EnDecoderUtil.SHAEncrypt("Hi, RSA"); System.out.println(sha); //HMAC byte[] mac_bytes = EnDecoderUtil.HMACEncrypt(key, "Hi, HMAC"); System.out.println(HexUtils.toHexString(mac_bytes)); }
更多java知识请关注java基础教程栏目。
以上是java怎么加密的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

Gate.io是一款受欢迎的加密货币交易所,用户可通过下载其安装包并安装在设备上使用。获取安装包步骤如下:访问Gate.io官方网站,点击“下载”,选择对应操作系统(Windows、Mac或Linux),将安装包下载至计算机。安装过程中建议暂时禁用杀毒软件或防火墙,确保安装顺利。完成后,用户需创建Gate.io账户以开始使用。

Java是热门编程语言,适合初学者和经验丰富的开发者学习。本教程从基础概念出发,逐步深入讲解高级主题。安装Java开发工具包后,可通过创建简单的“Hello,World!”程序实践编程。理解代码后,使用命令提示符编译并运行程序,控制台上将输出“Hello,World!”。学习Java开启了编程之旅,随着掌握程度加深,可创建更复杂的应用程序。

胶囊是一种三维几何图形,由一个圆柱体和两端各一个半球体组成。胶囊的体积可以通过将圆柱体的体积和两端半球体的体积相加来计算。本教程将讨论如何使用不同的方法在Java中计算给定胶囊的体积。 胶囊体积公式 胶囊体积的公式如下: 胶囊体积 = 圆柱体体积 两个半球体体积 其中, r: 半球体的半径。 h: 圆柱体的高度(不包括半球体)。 例子 1 输入 半径 = 5 单位 高度 = 10 单位 输出 体积 = 1570.8 立方单位 解释 使用公式计算体积: 体积 = π × r2 × h (4

Spring Boot简化了可靠,可扩展和生产就绪的Java应用的创建,从而彻底改变了Java开发。 它的“惯例惯例”方法(春季生态系统固有的惯例),最小化手动设置

JavaMadeSimple:ABeginner'sGuidetoProgrammingPower简介Java是一种强大的编程语言,广泛应用于从移动应用程序到企业级系统的各种领域。对于初学者来说,Java的语法简洁易懂,是学习编程的理想选择。基本语法Java使用基于类的面向对象编程范式。类是将相关数据和行为组织在一起的模板。以下是一个简单的Java类示例:publicclassPerson{privateStringname;privateintage;

十大虚拟币交易app排名:1. OKX,2. Binance,3. Gate.io,4. Kraken,5. Huobi,6. Coinbase,7. KuCoin,8. Crypto.com,9. Bitfinex,10. Gemini。选择平台时应考虑安全性、流动性、手续费、币种选择、用户界面和客户支持。
