java 加密
来源:互联网 发布:并发编程实践 编辑:程序博客网 时间:2024/06/05 19:50
1.Base64 加密
import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import java.security.MessageDigest;public class Coder {public static void main(String[] args) {try {//1. base64 加密、解密System.out.println("=========1. base64 加密、解密=========");String name_for_base64 = "123456";System.out.println("加密之前:" + name_for_base64);String encrypt_name_for_base64 = encryptBASE64(name_for_base64.getBytes());System.out.println("加密之后:" + encrypt_name_for_base64);byte[] decrypt_name_for_base64 = decryptBASE64(encrypt_name_for_base64);System.out.println("解密之后:" + new String(decrypt_name_for_base64));//2. md5 加密System.out.println("=========2. md5 加密=========");String name_for_md5= "123456";System.out.println("加密之前:" + name_for_md5);byte[] encrypt_name_for_md5 =encryptMD5(name_for_md5.getBytes());System.out.println("加密之后:" + new String(encrypt_name_for_md5));//3. sha 加密System.out.println("=========2. sha 加密=========");String name_for_sha= "123456";System.out.println("加密之前:" + name_for_sha);byte[] encrypt_name_for_sha =encryptSHA(name_for_sha.getBytes());System.out.println("加密之后:" + new String(encrypt_name_for_sha));} catch (Exception e) {e.printStackTrace();}}public static final String KEY_SHA = "SHA";public static final String KEY_MD5 = "MD5";/** * BASE64解密 * * @param key * @return * @throws Exception */public static byte[] decryptBASE64(String key) throws Exception {return (new BASE64Decoder()).decodeBuffer(key);}/** * BASE64加密 * * @param key * @return * @throws Exception */public static String encryptBASE64(byte[] key) throws Exception {return (new BASE64Encoder()).encodeBuffer(key);}/** * MD5加密 * * @param data * @return * @throws Exception */public static byte[] encryptMD5(byte[] data) throws Exception {MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);md5.update(data);return md5.digest();}/** * SHA加密 * * @param data * @return * @throws Exception */public static byte[] encryptSHA(byte[] data) throws Exception {MessageDigest sha = MessageDigest.getInstance(KEY_SHA);sha.update(data);return sha.digest();}}
2.SHA 加密
import java.security.Key;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import javax.crypto.Cipher;/** * 这个加密用到了上面 base64 的加密类 * @author Administrator * */public class RSAEncrypter {public static void main(String[] args) throws Exception {String name = "123abc";// 初始化之后的公钥、私钥System.out.println("公钥:" + getPublicKey(keyMap));System.out.println("私钥:" +getPrivateKey(keyMap));// 使用 rsa 公钥加密,私钥解密System.out.println("使用 公钥->加密、私钥->解密");System.out.println("加密之前数据:" + name);byte[] encrypt_by_pubkey = encryptByPublicKey(name.getBytes(), getPublicKey(keyMap));System.out.println("公钥加密之后 byte[] : " + Arrays.toString(encrypt_by_pubkey));byte[] decrypt_by_prikey = decryptByPrivateKey(encrypt_by_pubkey, getPrivateKey(keyMap));System.out.println("私钥解密之后 byte[] : " + Arrays.toString(decrypt_by_prikey));System.out.println("解密之后数据:" + new String(decrypt_by_prikey));System.out.println("==============================");// 使用 rsa 私钥加密,公钥解密System.out.println("使用 私钥->加密,公钥->解密");System.out.println("加密之前数据:" + name);byte[] encrypt_by_prikey = encryptByPrivateKey(name.getBytes(), getPrivateKey(keyMap));System.out.println("私钥加密之后 byte[] : " + Arrays.toString(encrypt_by_prikey));byte[] decrypt_by_pubkey = decryptByPublicKey(encrypt_by_prikey, getPublicKey(keyMap));System.out.println("私钥解密之后 byte[] : " + Arrays.toString(decrypt_by_pubkey));System.out.println("解密之后数据:" + new String(decrypt_by_pubkey));} /** * 加密的方式 */public static final String KEY_ALGORTHM="RSA";// public static final String SIGNATURE_ALGORITHM="MD5withRSA"; /** * 公钥 */public static final String PUBLIC_KEY = "RSAPublicKey";//公钥 /** * 私钥 */public static final String PRIVATE_KEY = "RSAPrivateKey";//私钥private static Map<String,Object> keyMap = initKey(); /** * 初始化密钥 * @return * @throws Exception */ public static Map<String,Object> initKey() { Map<String,Object> keyMap = new HashMap<String, Object>(2); try { KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORTHM); keyPairGenerator.initialize(1024);// keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); //公钥 RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); //私钥 RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); keyMap.put(PUBLIC_KEY, publicKey); keyMap.put(PRIVATE_KEY, privateKey); } catch (Exception e) { e.printStackTrace(); } return keyMap; } /** * 取得公钥,并转化为String类型 * @param keyMap * @return * @throws Exception */ public static String getPublicKey(Map<String, Object> keyMap)throws Exception{ Key key = (Key) keyMap.get(PUBLIC_KEY); return Coder.encryptBASE64(key.getEncoded()); } /** * 取得私钥,并转化为String类型 * @param keyMap * @return * @throws Exception */ public static String getPrivateKey(Map<String, Object> keyMap) throws Exception{ Key key = (Key) keyMap.get(PRIVATE_KEY); return Coder.encryptBASE64(key.getEncoded()); } /** * 用私钥加密 * @param data 加密数据 * @param key 密钥 * @return * @throws Exception */ public static byte[] encryptByPrivateKey(byte[] data,String key)throws Exception{ //解密密钥 byte[] keyBytes = Coder.decryptBASE64(key); //取私钥 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORTHM); Key privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); //对数据加密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(data); } /** * 用私钥解密<span style="color:#000000;"></span> * @param data 加密数据 * @param key 密钥 * @return * @throws Exception */ public static byte[] decryptByPrivateKey(byte[] data,String key)throws Exception{ //对私钥解密 byte[] keyBytes = Coder.decryptBASE64(key); PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORTHM); Key privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); //对数据解密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, privateKey); return cipher.doFinal(data); } /** * 用公钥加密 * @param data 加密数据 * @param key 密钥 * @return * @throws Exception */ public static byte[] encryptByPublicKey(byte[] data,String key)throws Exception{ //对公钥解密 byte[] keyBytes = Coder.decryptBASE64(key); //取公钥 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORTHM); Key publicKey = keyFactory.generatePublic(x509EncodedKeySpec); //对数据解密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, publicKey); return cipher.doFinal(data); } /** * 用公钥解密 * @param data 加密数据 * @param key 密钥 * @return * @throws Exception */ public static byte[] decryptByPublicKey(byte[] data,String key)throws Exception{ //对私钥解密 byte[] keyBytes = Coder.decryptBASE64(key); X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORTHM); Key publicKey = keyFactory.generatePublic(x509EncodedKeySpec); //对数据解密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, publicKey); return cipher.doFinal(data); }}
0 0
- java加密
- java 加密
- java 加密
- java加密
- java 加密
- java加密
- java加密
- java加密
- java 加密
- java加密
- java加密
- java加密!
- java 加密
- java 加密
- Java加密
- java 加密
- java 加密
- java 加密
- 裴蜀定理及证明
- hunnu11562:The Triangle Division of the Convex Polygon(第n个卡特兰数取模)
- 【笔试】6、求其最大公约数和最小公倍数
- 黑马程序员--- objective-c 类的继承
- UITableView省市区字典
- java 加密
- 欢迎使用CSDN-markdown编辑器
- POJ2478 Farey Sequence(欧拉函数,打表)
- 简单动态规划问题
- Java执行Oracle存储过程
- 《程序员面试宝典3》大量错误(50+)纠正表
- java操作mongodb(高级查询)
- Redhat7中关闭防火墙
- [IOS]IOS绘画概念