import java.security.MessageDigest;

public class HashUtils {

    public static String getMD5(String source) {
return getMD5(source.getBytes());
} public static String getMD5(byte[] source) {
try {
return getHash(source, "MD5");
} catch (Exception e) {
e.printStackTrace();
return null;
}
} public static String getSHA1(String source) {
return getSHA1(source.getBytes());
} public static String getSHA1(byte[] source) {
try {
return getHash(source, "SHA1");
} catch (Exception e) {
e.printStackTrace();
return null;
}
} public static String getSHA256(String source) {
return getSHA256(source.getBytes());
} public static String getSHA256(byte[] source) {
try {
return getHash(source, "SHA-256");
} catch (Exception e) {
e.printStackTrace();
return null;
}
} public static String getSHA512(String source) {
return getSHA512(source.getBytes());
} public static String getSHA512(byte[] source) {
try {
return getHash(source, "SHA-512");
} catch (Exception e) {
e.printStackTrace();
return null;
}
} public static String getHash(byte[] content, String algorithm) throws Exception {
String s;
char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
messageDigest.update(content);
byte tmp[] = messageDigest.digest();
char str[] = new char[tmp.length * 2]; int k = 0;
for (int i = 0; i < tmp.length; i++) {
byte byte0 = tmp[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
s = new String(str); return s;
}
}
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64; public class RSAUtil {
public static final String ALGORITHM = "RSA";
public static final String DEFAULT_CHARSET = "UTF8";
public static final int DEFAULT_KEY_SIZE = 2048; public static java.security.KeyPair generatorKeyPair() throws Exception {
return generatorKeyPair(DEFAULT_KEY_SIZE);
} public static java.security.KeyPair generatorKeyPair(int keySize) throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM);
keyPairGenerator.initialize(keySize);
keyPairGenerator.generateKeyPair();
return keyPairGenerator.genKeyPair();
} public static String encrypt(String content, String key) throws Exception {
return encrypt(content, key, DEFAULT_CHARSET);
} public static String encrypt(String content, String key, String charset) throws Exception {
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(key));
KeyFactory factory = KeyFactory.getInstance(ALGORITHM);
PublicKey publicKey = factory.generatePublic(keySpec);
return Base64.getEncoder().encodeToString(BaseEncryptUtils.crypt(content.getBytes(charset), publicKey, Cipher.ENCRYPT_MODE, ALGORITHM));
} public static String decrypt(String content, String key) throws Exception {
return decrypt(content, key, DEFAULT_CHARSET);
} public static String decrypt(String content, String key, String charset) throws Exception {
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(key));
KeyFactory factory = KeyFactory.getInstance(ALGORITHM);
PrivateKey privateKey = factory.generatePrivate(keySpec);
byte[] byteContent = Base64.getDecoder().decode(content);
return new String(BaseEncryptUtils.crypt(byteContent, privateKey, Cipher.DECRYPT_MODE, ALGORITHM), charset);
}
}
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64; public class AESUtils { public static String DEFAULT_CHARSET = "UTF8";
public static int DEFAULT_KEY_SIZE = 128;
public static String ALGORITHM = "AES"; public static String generatorKey(String seed) throws Exception {
return generatorKey(seed, DEFAULT_KEY_SIZE);
} public static String generatorKey(String seed, int keySize) throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
SecureRandom secureRandom = new SecureRandom(seed.getBytes()); keyGenerator.init(keySize, secureRandom);
SecretKey secretKey = keyGenerator.generateKey();
byte[] encodeFormat = secretKey.getEncoded();
return Base64.getEncoder().encodeToString(encodeFormat);
} public static String encrypt(String content, String key) throws Exception {
return encrypt(content, key, DEFAULT_CHARSET);
} public static String encrypt(String content, String key, String charset) throws Exception {
return Base64.getEncoder().encodeToString(crypt(content.getBytes(charset), key, Cipher.ENCRYPT_MODE));
} public static String decrypt(String content, String key) throws Exception {
return decrypt(content, key, DEFAULT_CHARSET);
} public static String decrypt(String content, String key, String charset) throws Exception {
byte[] byteContent = Base64.getDecoder().decode(content);
return new String(crypt(byteContent, key, Cipher.DECRYPT_MODE), charset);
} private static byte[] crypt(byte[] content, String key, int mode) throws Exception {
byte[] encodeFormat = Base64.getDecoder().decode(key);
SecretKeySpec keySpec = new SecretKeySpec(encodeFormat, ALGORITHM);
return BaseEncryptUtils.crypt(content, keySpec, mode, ALGORITHM);
}
}
HashUtils.getSHA256(user.getPassword())

加密:HashUtils,RSAUtil,AESUtils的更多相关文章

  1. AESUtils.java

    package com.vcredit.framework.utils; import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySp ...

  2. spring boot 常见的第三方集成

    spring boot基于1.x. 一 集成redis 1.1 配置 spring.redis.host = localhost spring.redis.port = 6379 spring.red ...

  3. C# 通过java生成的RSA公钥加密和解密

    最近工作需要将对方公司生成的RSA加密公钥进行明文加密和解密,发现了几点贴出来做个笔记. RSA单次加密是有长度限制!微软封装的加密方法如果出现长度超出指定范围的话报错是直接报“该项不适于在指定状态下 ...

  4. Android数据加密之Aes加密

    前言: 项目中除了登陆,支付等接口采用rsa非对称加密,之外的采用aes对称加密,今天我们来认识一下aes加密. 其他几种加密方式: Android数据加密之Rsa加密 Android数据加密之Aes ...

  5. android AES 加密

    import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import jav ...

  6. android md5加密与rsa加解密实现代码

    import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security. ...

  7. iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

    本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...

  8. android base64 和 aes 加密 解密

    package pioneerbarcode.ccw.com.encryptanddecode;import android.os.Bundle;import android.support.v7.a ...

  9. android加固系列—6.仿爱加密等第三方加固平台之动态加载dex防止apk被反编译

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5402599.html ] 此方案的目的是隐藏源码防止直接性的反编译查看源码,原理是加密编译好的 ...

随机推荐

  1. 关于学习springboot和springcloud的很不错的教程

    近日,逐步开始学习了springboot和springcloud.本以为很简单,但是随着学习的深入,发现其中有很多地方都需要认真揣摩.凡事都需要循序渐进,有一个好的开端就是成功的一半.于是在浩瀚的网络 ...

  2. Django中的From和ModelForm

  3. CodeForces 280B Maximum Xor Se

    题目链接:http://codeforces.com/contest/280/problem/B 题目大意: 给定一个由n个数组成的一个序列,s[l..r] (1 ≤ l < r ≤ n)代表原 ...

  4. Shell命令-文件及内容处理之sort、uniq

    文件及内容处理 - sort.unip 1. sort:对文件的文本内容排序 sort命令的功能说明 sort 命令用于将文本文件内容加以排序.sort 可针对文本文件的内容,以行为单位来排序. so ...

  5. Java 异常体系

    1.异常简介 Java把异常作为一种类,当做对象来处理.所有异常类的基类是Throwable类,两大子类分别是Error和Exception. 系统错误由Java虚拟机抛出,用Error类表示.Err ...

  6. CCProxy使用说明

    CCProxy:通过手机调试webservice工具 第一步配置,点击设置 弹出如下页面点击E 弹出如下页面 配置端口,点击确定配置完成!! c#项目在路径为DCYS\.vs\config下找到文件a ...

  7. Js元素拖拽功能实现

    Js元素拖拽功能实现 需要解决的问题 最近项目遇到了一个问题,就是用户某个操作需要弹出一个自定义的内容输入框,但是有个缺点,当浏览太大的时候没办法点击确认和取消按钮,应为这个弹出框是采用绝对定位的,取 ...

  8. 洛谷P1188PASTE题解

    题目 这个题主要是一个考分类讨论的模拟题,做这个提的时候首先要脑子清醒,才可以清楚地写出怎么模拟来. \(Code\) #include <iostream> #include <a ...

  9. Linux NTP时间同步服务

    NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议.它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网 ...

  10. C/C++ const

    一 含义 const修饰的变量在C和C++中的含义是什么?一样吗? 在C中用const修饰的变量仅仅表示这个符合表示的变量不能被赋值,是只读的,那么它与常量有啥区别呢?区别就是一个是常量,一个是变量. ...