`

java单向加密,双向加密解密方法介绍,收藏以后开发中必定有用

阅读更多

今天来给大家讲解一下,java如何进行加密解密的,这里面包含java的单向加密解密比如MD5等等,也包含java的双向加密解密方式,比如base64格式的等等,首先先给大家介绍一下大体的加密方法,然后再对具体的给出一些实例:
1.md5/hash加密算法(单向加密)
2.单匙密码体制:DES
3.数字签名
4.非对称密匙密码体制(公匙体系)
5.base64式双向加密解密法:
例如:
 

/ * 编码原理:将3个字节转换成4个字节( (3 X 8) = 24 = (4 X 6) )
      * 先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了
      *
      * @param data
      * @return 编码后的Base64字符串
      */
     public static String Base64Encode(byte[] data) {
         StringBuilder builder = new StringBuilder();
         int[] temp = new int[4];
         int len = data.length - data.length % 3;
         for (int i = 0; i < len; i += 3) {
             int goal = 0;
             for (int j = 0; j < 3; j++) {
                 goal <<= 8;
                 goal |= (data[i + j] & 0xff);
             }
             for (int k = 0; k < 4; k++) {
                 temp[k] = goal & 0x3f;
                goal >>= 6;
             }
             for (int k = 3; k >= 0; k--) {
                 builder.append(base64_alphabet.charAt(temp[k]));
             }
         }
         int index;
         switch (data.length % 3) {
         case 1:
             index = data[data.length - 1] >> 2;
             builder.append(base64_alphabet.charAt(index));
             index = (data[data.length - 1] & 0x03) << 4;
             builder.append(base64_alphabet.charAt(index));
             builder.append("==");
             break;
         case 2:
             index = data[data.length - 1 - 1] >> 2;
             builder.append(base64_alphabet.charAt(index));
             index = (data[data.length - 1 - 1] & 0x03) << 4
                     | data[data.length - 1] >> 4;
             builder.append(base64_alphabet.charAt(index));
             index = (data[data.length - 1] & 0x0f) << 2;
             builder.append(base64_alphabet.charAt(index));
             builder.append('=');
             break;
         }
         return builder.toString();
     }
 
     /**
      * 解码原理:将4个字节转换成3个字节. 先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位.
      *
      * @param data
      *            需解码的Base64字符串。
      * @return byte[]-解码出的字节数组
      */
     public static byte[] Base64Decode(String data) {
         char[] chArray = data.toCharArray();
         int len = chArray.length;
         byte[] result = new byte[len * 3 / 4];
         for (int i = 0, res_i = 0; i < len; i += 4, res_i += 3) {
             int goal = 0;
             int index = 0;
             for (int k = 0; k < 4; k++) {
                 index = base64_alphabet.indexOf(chArray[i + k]);
                 goal <<= 6;
                 goal |= index;
             }
             for (int j = 2; j >= 0; j--) {
                 result[res_i + j] = (byte) goal;
                 goal >>= 8;
             }
         }
         // 等号=的处理
         if (chArray[len - 1] != '=')
             return result;
         else if (chArray[len - 2] == '=')
             return Arrays.copyOf(result, result.length - 2);
         else
             return Arrays.copyOf(result, result.length - 1);
 
     }
 // 将 s 进行 BASE64 编码
     public static String getBASE64(String s) {
         if (s == null)
             return null;
         return Base64Encode(s.getBytes());
     }
 
     // 将 BASE64 编码的字符串 s 进行解码
     public static String getFromBASE64(String s) {
         if (s == null)
             return null;
         try {
             byte[] b = Base64Decode(s);
             return new String(b);
         } catch (Exception e) {
             return null;
         }
     }

 

6.URLEncoder双向加密解密方式
好了,具体的就先给大家如果大家想看具体的更多的加密方法推荐大家可以去59biye网,查看java加密解密的方法总结

4
1
分享到:
评论
4 楼 11miao 2014-07-05  
我个人还是觉得挺不错的,顶一个
3 楼 59biye 2014-07-04  
只能说写的一般,不怎么有深度。
2 楼 benben 2014-07-04  
自己来助助威
1 楼 i_59biye 2014-07-03  
不错,对我挺有用的,先保存一下再说,谢谢分享。

相关推荐

    java后台及前端js使用AES互相加解密及前端md5加密

    综上所述,本主题涵盖了Java和JavaScript中数据加密的重要技术,包括AES的双向加解密和MD5的单向加密。在实际应用中,这些技术可以帮助保护用户数据,确保网络通信的安全。在开发过程中,要确保遵循最佳安全实践,...

    C#加密解密DeEncryptHelper.zip

    单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 加密字符串 密钥为系统默认 加密文件 解密字符串 解密文件 128位MD5算法加密字符串 128位MD5算法加密Byte数组 32位MD5加密 Base64加密 Base64解密 DES加密/解密...

    Java开发的多种加密解密工具包

    6. **Key和Cipher对象**:在Java中,`java.security.Key`接口代表加密密钥,具体实现如`SecretKeySpec`(对称密钥)和`PublicKey`、`PrivateKey`(非对称密钥)。`javax.crypto.Cipher`类用于加密和解密操作,根据所...

    java的各种加密解密算法

    在Java中,常用的对称加密算法有DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)等。例如,使用AES进行加密和解密可以通过`javax.crypto.Cipher`类实现,首先创建一个`...

    java密码加密与解密

    在Java中,我们可以使用`java.security.MessageDigest`类来实现MD5加密。以下是一个简单的示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class ...

    java md5加密 解密

    在Java中,MD5加密通常用于生成固定长度的数字指纹,以确保数据的完整性和一致性。以下是关于Java MD5加密和解密的相关知识点: 1. **MD5原理**:MD5是由美国计算机科学家Ronald Rivest开发的一种加密散列函数,它...

    MD5单向加密,加密后无法解密

    MD5单向加密,加密后无法解密。。。。。。。。。。

    基于JAVA的MD5加密解密实现

    纯JAVA的MD5加密,利用MD5单向函数产生密钥,方便测试

    java的md5加密解密

    ### Java中的MD5加密与“解密”技术详解 #### 一、MD5算法简介 MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值,通常用于确保数据的完整性和一致性。在...

    ASP常用加密解密方法

    在ASP(Active Server ...以上仅是ASP加密解密的简单介绍,实际应用中可能需要结合各种方法,并且考虑安全性和效率。压缩包中的“ASP常用加密解密”可能包含更多实例和详细教程,可以帮助你进一步理解并实践这些方法。

    JAVA源码很强的Java加密解密算法源码

    ### 二、Java中常见的加密解密算法 #### 2.1 对称加密算法 对称加密算法是指加密和解密使用同一把密钥的算法。这类算法通常执行速度快,适合大量数据的加密处理。常用的对称加密算法有: - **DES(Data Encryption ...

    ABAP加密和解密.doc

    在ABAP中,有时还需要自定义加密解密逻辑,这时可以利用ABAP的编程能力实现。例如,你可以创建一个自定义加密函数,基于已有的加密算法(如AES)进行扩展,以满足特定的安全需求。同时,别忘了在设计自定义加密算法...

    ASP常用的加密和解密的方法

    本篇文章将详细介绍ASP.NET开发中常用的加密和解密方法,并通过具体的实例帮助理解。 #### 二、数据加密/编码算法列表 ##### 1. 常用密钥算法 密钥算法主要用于敏感数据、摘要、签名等信息的加密处理。 - **DES ...

Global site tag (gtag.js) - Google Analytics