Java Base64、AES、SHA1、MD5加密算法(转载)

  1 package com.example.decript;
  2
  3 import java.io.UnsupportedEncodingException;
  4 import java.security.InvalidKeyException;
  5 import java.security.MessageDigest;
  6 import java.security.NoSuchAlgorithmException;
  7 import java.security.SecureRandom;
  8 import javax.crypto.BadPaddingException;
  9 import javax.crypto.Cipher;
 10 import javax.crypto.IllegalBlockSizeException;
 11 import javax.crypto.KeyGenerator;
 12 import javax.crypto.NoSuchPaddingException;
 13 import javax.crypto.SecretKey;
 14 import javax.crypto.spec.SecretKeySpec;
 15
 16 public class DecriptTest {
 17
 18     public static String SHA1(String decript) {
 19         try {
 20             MessageDigest digest = java.security.MessageDigest
 21                     .getInstance("SHA-1");
 22             digest.update(decript.getBytes());
 23             byte messageDigest[] = digest.digest();
 24             // Create Hex String
 25             StringBuffer hexString = new StringBuffer();
 26             // 字节数组转换为 十六进制 数
 27             for (int i = 0; i < messageDigest.length; i++) {
 28                 String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
 29                 if (shaHex.length() < 2) {
 30                     hexString.append(0);
 31                 }
 32                 hexString.append(shaHex);
 33             }
 34             return hexString.toString();
 35
 36         } catch (NoSuchAlgorithmException e) {
 37             e.printStackTrace();
 38         }
 39         return "";
 40     }
 41
 42     public static String SHA(String decript) {
 43         try {
 44             MessageDigest digest = java.security.MessageDigest
 45                     .getInstance("SHA");
 46             digest.update(decript.getBytes());
 47             byte messageDigest[] = digest.digest();
 48             // Create Hex String
 49             StringBuffer hexString = new StringBuffer();
 50             // 字节数组转换为 十六进制 数
 51             for (int i = 0; i < messageDigest.length; i++) {
 52                 String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
 53                 if (shaHex.length() < 2) {
 54                     hexString.append(0);
 55                 }
 56                 hexString.append(shaHex);
 57             }
 58             return hexString.toString();
 59
 60         } catch (NoSuchAlgorithmException e) {
 61             e.printStackTrace();
 62         }
 63         return "";
 64     }
 65
 66     public static String MD5(String input) {
 67         try {
 68             // 获得MD5摘要算法的 MessageDigest 对象
 69             MessageDigest mdInst = MessageDigest.getInstance("MD5");
 70             // 使用指定的字节更新摘要
 71             mdInst.update(input.getBytes());
 72             // 获得密文
 73             byte[] md = mdInst.digest();
 74             // 把密文转换成十六进制的字符串形式
 75             StringBuffer hexString = new StringBuffer();
 76             // 字节数组转换为 十六进制 数
 77             for (int i = 0; i < md.length; i++) {
 78                 String shaHex = Integer.toHexString(md[i] & 0xFF);
 79                 if (shaHex.length() < 2) {
 80                     hexString.append(0);
 81                 }
 82                 hexString.append(shaHex);
 83             }
 84             return hexString.toString();
 85         } catch (NoSuchAlgorithmException e) {
 86             e.printStackTrace();
 87         }
 88         return "";
 89     }
 90
 91     /**
 92      * 加密
 93      *
 94      * @param content
 95      *            需要加密的内容
 96      * @param password
 97      *            加密密码
 98      * @return
 99      */
100     public static byte[] encryptAES(String content, String password) {
101         try {
102             KeyGenerator kgen = KeyGenerator.getInstance("AES");
103             kgen.init(128, new SecureRandom(password.getBytes()));
104             SecretKey secretKey = kgen.generateKey();
105             byte[] enCodeFormat = secretKey.getEncoded();
106             SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
107             Cipher cipher = Cipher.getInstance("AES");// 创建密码器
108             byte[] byteContent = content.getBytes("utf-8");
109             cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化
110             byte[] result = cipher.doFinal(byteContent);
111             return result; // 加密
112         } catch (NoSuchAlgorithmException e) {
113             e.printStackTrace();
114         } catch (NoSuchPaddingException e) {
115             e.printStackTrace();
116         } catch (InvalidKeyException e) {
117             e.printStackTrace();
118         } catch (UnsupportedEncodingException e) {
119             e.printStackTrace();
120         } catch (IllegalBlockSizeException e) {
121             e.printStackTrace();
122         } catch (BadPaddingException e) {
123             e.printStackTrace();
124         }
125         return null;
126     }
127
128     /**
129      * 解密
130      *
131      * @param content
132      *            待解密内容
133      * @param password
134      *            解密密钥
135      * @return
136      */
137     public static byte[] decryptAES(byte[] content, String password) {
138         try {
139             KeyGenerator kgen = KeyGenerator.getInstance("AES");
140             kgen.init(128, new SecureRandom(password.getBytes()));
141             SecretKey secretKey = kgen.generateKey();
142             byte[] enCodeFormat = secretKey.getEncoded();
143             SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
144             Cipher cipher = Cipher.getInstance("AES");// 创建密码器
145             cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
146             byte[] result = cipher.doFinal(content);
147             return result; // 加密
148         } catch (NoSuchAlgorithmException e) {
149             e.printStackTrace();
150         } catch (NoSuchPaddingException e) {
151             e.printStackTrace();
152         } catch (InvalidKeyException e) {
153             e.printStackTrace();
154         } catch (IllegalBlockSizeException e) {
155             e.printStackTrace();
156         } catch (BadPaddingException e) {
157             e.printStackTrace();
158         }
159         return null;
160     }
161
162     /**
163      * BASE64解密
164      *
165      * @param key
166      * @return
167      * @throws Exception
168      */
169     public static String decryptBASE64(String key) {
170
171         return "";
172     }
173
174     /**
175      * BASE64加密
176      *
177      * @param key
178      * @return
179      * @throws Exception
180      */
181     public static String encryptBASE64(String key) {
182
183         return "";
184     }
185 }


原文链接:http://www.open-open.com/lib/view/open1392185662160.html

时间: 2024-11-03 05:25:46

Java Base64、AES、SHA1、MD5加密算法(转载)的相关文章

Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

[前言] 本文简单的介绍了加密技术相关概念,最后总结了java中现有的加密技术以及用法和样例 [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao.正确应该是miyue,可是大家都读miyao) 2.简单的样例 将123456每位数字都加1后得到234567, 当中123456就是明文.234567就是密文.加密密钥就是1,加密算法是每位加 3.对称加密和非对称加密 以上为例. 123456-->234567的加密

Java MD5,base64,AES加密工具类

import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.regex.Matcher; import java.util.regex.Pat

java 加密解密算法MD5/SHA1,DSA

通常,使用的加密算法 比较简便高效,密钥简短,加解密速度快,破译极其困难.本文介绍了 MD5/SHA1,DSA,DESede/DES,Diffie-Hellman的使用. 第1章基础知识 1.1. 单钥密码体制 单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密. 通常,使用的加密算法比较简便高效,密钥简短,加解密速度快,破译极其困难.但是加密的安全性依靠密钥保管的安全性,在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题,并且如果在多用户的情况下密钥的

常用加密算法的Java实现总结(二) ——对称加密算法DES、3DES和AES

常用加密算法的Java实现总结(二) ——对称加密算法DES.3DES和AES 日期:2014/7/6 文:阿蜜果 1.对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文.在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥

MD5加密算法(java及js)

为了防止用户登陆过程中信息被拦截导致信息泄露,我们应该在客户端就对用户密码进行加密.浏览器提交给服务器的是加密后的信息,即使被恶意拦截,被拦截信息也已做了加密处理,现在比较安全的一种加密算法是MD5加密算法,尽管MD5是一种单向的加密算法,但网上也有破解网站,所以为了进一步提高安全性,可以进行两次md5加密,或者结合其他的加密方法如3des等进行二次加密. 代码如下: js版: var hexcase = 0; function hex_md5(a) { if (a == "") re

AES SHA-1 SM3 MD5

AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准. 输入:128bit 的消息分组 输出:128bit 的密文分组 密钥长度及圈数 128 10 192 12 256 14 消息 与 密钥 addroundkey//添加轮密钥  每个字节与轮密钥的对应字节进行异或运算 subbytes//  字替代  经过s盒,即对每个字节进行替换,非线性部件,16个字节采用相同的s-盒 shiftrow//  行变换   每一行按字节循环以为.第一行移动0位,第二行<<<1,.

Java 加密 AES 对称加密算法

题目链接:https://oj.leetcode.com/problems/set-matrix-zeroes/ Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 一个个找肯定会超时,我们可以分别用一个行向量和一个列向量进行维护.这样O(m*n) 能出来 class Solution { public: void setZeroes(vector<vector

Java 加密解密之对称加密算法AES

Java 加密解密之对称加密算法AES 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一.该算法

iOS常用加密方法(aes、md5、base64)

1.代码 iOS常用加密方法(aes.md5.base64) 1.AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 敏 on 12-11-24. // Copyright (c) 2012年 BOX. All rights reserved. // #import <Foundation/Foundation.h> @class NSString; @interface NSData (Encryption)

java中常用的数据加密算法

以下为加密的工具类: import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; impo