java主要的加密解密算法
如基本的单向加密算法:
- BASE64 严格地说,属于编码格式,而非加密算法
- MD5(Message Digest algorithm 5,信息摘要算法)
- SHA(Secure Hash Algorithm,安全散列算法)
- HMAC(Hash Message Authentication Code,散列消息鉴别码)
复杂的对称加密(DES、PBE)、非对称加密算法:
- DES(Data Encryption Standard,数据加密算法)
- PBE(Password-based encryption,基于密码验证)
- RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
- DH(Diffie-Hellman算法,密钥一致协议)
- DSA(Digital Signature Algorithm,数字签名)
- ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)
1、BASE64
Base64定义:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。
实例:
package cn.tzz.java.crypto; import java.io.IOException; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class BASE64Util { /**加密*/ public static String encrypt(byte[] key) { return (new BASE64Encoder()).encodeBuffer(key); } /**解密*/ public static String decrypt(String key) { try { return new String((new BASE64Decoder()).decodeBuffer(key),"utf-8"); } catch (IOException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { String encryptStr = encrypt("123456".getBytes()); System.out.println("加密:"+encryptStr); System.out.println("解密:"+decrypt(encryptStr)); } }
2、MD5&SHA
MD5 -- message-digest algorithm 5 (信息-摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
package cn.tzz.java.crypto.simple; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5SHACryptoUtil { /**md5加密*/ public static String md5Encrypt(String str) { String md5String = null; try { // 获得MD5摘要算法的 MessageDigest 对象 MessageDigest md = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 md.update(str.getBytes()); // 获得密文,把密文转换成十六进制的字符串形式 //方式一 md5String = byte2Hex(md.digest()); //方式二 //md5String = byteToHex(md.digest()); //方式三 //md5String = byteToString(md.digest()); } catch (Exception ex) { ex.printStackTrace(); } return md5String; } /**SHA1加密*/ public static String shaEncrypt(String date) { byte[] digest = null; String rs = null; try { // 得到一个SHA-1的消息摘要 MessageDigest messageDigest = MessageDigest.getInstance("SHA-1"); // 添加要进行计算摘要的信息 messageDigest.update(date.getBytes()); // 得到该摘要 digest = messageDigest.digest(); // 将摘要转为字符串 rs = byte2Hex(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return rs; } // 1.把密文转换成十六进制的字符串形式(Integer.toHexString函数) public static String byte2Hex(byte[] b) { StringBuffer sb = new StringBuffer(); String tmp = ""; for (int i = 0; i < b.length; i++) { tmp = Integer.toHexString(b[i] & 0XFF); if (tmp.length() == 1){ sb.append("0"); } sb.append(tmp); } return sb.toString(); } // 2.把密文转换成十六进制的字符串形式(自定义) public static String byteToHex(byte[] b) { // 全局数组 char[] hexDigits = {'0' , '1' , '2' , '3' , '4' , '5' ,'6' , '7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f'}; // 把密文转换成十六进制的字符串形式 int j = b.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = b[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } // 3.转换字节数组为16进制字串 private static String byteToString(byte[] b) { StringBuffer sBuffer = new StringBuffer(); for (int i = 0; i < b.length; i++) { sBuffer.append(byteToArrayString(b[i])); } return sBuffer.toString(); } // 返回形式为数字跟字符串 private static String byteToArrayString(byte b) { String[] strDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; int iRet = b; if (iRet < 0) { iRet += 256; } int iD1 = iRet / 16; int iD2 = iRet % 16; return strDigits[iD1] + strDigits[iD2]; } public static void main(String[] args) { System.out.println(md5Encrypt("123456")); System.out.println(shaEncrypt("123456")); } }
相关推荐
在这个压缩包中,包含的资源可以帮助我们理解并实现SHA1、SHA、MD5、AES加密与解密,以及BASE64编码和解码。下面我们将详细探讨这些加密算法和它们在Java中的实现。 1. **SHA(Secure Hash Algorithm)**: SHA是一...
本资源提供了base64、MD5、RSA和SHA1这四种常见加密算法的Java实现,并附带了相应的jar包,便于学习和应用。 首先,Base64是一种简单的编码方式,主要用于将二进制数据转换为可打印的ASCII字符,以便在网络传输或...
Java 常用的 4 种加密方式(MD5+Base64+SHA+BCrypt) Java 加密是指使用 Java 语言来实现数据加密、解密和数字签名等操作。数据加密是指将明文数据转换为难以理解的密文,以保护数据的机密性和完整性。Java 提供了...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
本资源包"java实现Base64、MD5、SHA、AES、RAS等加解密js库文件"集中了这些常见加密算法的JavaScript实现,方便在前端或后端进行数据处理。下面将详细介绍这些加密技术及其应用。 1. **Base64**:Base64是一种将二...
MD5和Base64是两种在信息技术领域广泛使用的编码与加密技术,它们各自有其...总之,MD5和Base64是信息技术中基础且实用的技术,但在现代网络安全需求下,需要结合更强大的加密算法和安全策略,以保障数据的安全和隐私。
Java加密算法是信息安全领域的重要组成部分,它在保护数据隐私、验证数据完整性和确认发送者身份等方面发挥着关键作用。这个名为"Java加密算法学习笔记的源码包"的压缩文件包含了关于Java中几种主要加密算法的实践...
在提供的`encodeDemo`文件中,可能包含了更多关于MD5和BASE64的使用示例,以及可能涉及其他加密算法的代码,这些都是进一步学习和实践Java加密技术的好资源。通过深入研究这些代码,开发者可以更好地掌握Java加密...
在提供的文件名中,我们看到有三个Java类:`Base64.java`、`DESPlus.java`和`MD5Util.java`。这些文件很可能是实现这三种技术的Java代码: - `Base64.java`:这个类可能包含了Base64编码和解码的函数,用于在Java...
Java加密算法源码是开发人员在进行数据安全处理时常用的一种工具,涵盖了多种常见的加密算法,包括AES(高级加密标准)、DES(数据加密标准)、MD5(消息摘要算法5)、RSA(公钥加密技术)以及SHA(安全散列算法)。...
在给定的压缩包文件中,包含了几种常用的加密算法实现,分别是MD5、Base64和SHA256。这些算法在Android开发,尤其是原生(Native)层的加密处理中扮演着关键角色。 1. **MD5(Message-Digest Algorithm 5)**: - ...
Java加密技术(一) 关键字: java 加密基础, base64, md5, mac, sha, 单向加密 。。。。。。。。。。。。。。
同时,描述中提到了MD5加密,这又是一种常见的哈希加密算法。下面我们将详细探讨这些知识点。 1. **Base64编码**:Base64是一种用于将二进制数据转换为ASCII字符串的编码方法,以便在网络上传输或者在某些只能处理...
Base64和MD5是两种在信息技术领域广泛应用的编码与加密技术。Base64主要用于将二进制数据转化为可打印的ASCII字符,而MD5则是一种广泛使用的密码散列函数,用于验证数据的完整性和安全性。 Base64是一种基于64个可...
java_security JAVA安全实现三种方式: ...1.MD5 2.SHA 3.MAC 四。数字签名:JDK实现 com.timliu.security.signature 1.RSA 2.DSA 3.ECDSA 五。对称加密算法:com.timliu.security.symmetric_encryption 1
而"EncryptionAlgorithm"可能包含了对各种加密算法的概述,包括对称加密(如AES)、非对称加密(如RSA)以及哈希函数(如MD5和SHA1)等。 总的来说,MD5和SHA1都是用于数据完整性验证的哈希函数,它们在信息安全...
本文将深入探讨两种常见的加密算法:Base64和MD5,以及它们在Android开发中的应用。 首先,让我们了解一下Base64。Base64是一种编码机制,用于将二进制数据转换为ASCII字符形式,以便在网络上传输或存储。在Android...
### MD5加密算法详解 #### 一、MD5算法简介 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数(哈希函数),它能够接收任意长度的数据输入,并生成一个固定长度(通常为128位)的十六进制数值作为输出...
四、Java加密算法实现步骤 1. 导入相关类库:如`javax.crypto.Cipher`、`java.security.KeyPairGenerator`等。 2. 选择加密算法:如AES、RSA等。 3. 初始化Cipher对象:根据加密模式(ECB、CBC等)和填充模式...
MD5加密jar包是将MD5算法封装到Java程序中的库,方便开发者在Java应用中快速实现MD5加密功能。 MD5的特点: 1. **不可逆性**:MD5算法是单向的,即给定一个输入,可以得到一个固定长度的摘要,但不能通过摘要反推出...