zoukankan      html  css  js  c++  java
  • java 加解密

    以下介绍几种java的加密和解密技术:

    1:base64 加解密:使用的依赖 

    <dependency>
        <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.10</version>
        </dependency>

     加密代码:

    public String base64En(){
            Base64 base64 = new Base64();
            byte[] encode = base64.encode(NAME.getBytes());
            System.out.println(new String(encode));
            return new String(encode);
        }

    解密代码:

    public String base64De(String encodeStr){
            
            Base64 base64 = new Base64();
            byte[] decodeStr = base64.decodeBase64(encodeStr);
            System.out.println(new String(decodeStr));
            return new String(decodeStr);
        }

    2:MD5 摘要算法:md5摘要算法的主要应用场景:数据库中保存的用户的密码信息需要通过md5进行加密,然后和用户提交的 md5加密后的密码进行比较,如果一致则进行

    一致的业务处理,如果不一致则进行不一致的业务逻辑处理

    加密代码如下:

    public void MD5De() throws NoSuchAlgorithmException{
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            Base64 base64 = new Base64();
            byte[] name = md5.digest(NAME.getBytes());
            byte[] city = md5.digest(CITY.getBytes());
            String str1=base64.encodeBase64String(name);
            String str2=base64.encodeBase64String(city);
            if(str1.equals(str2)){
                System.out.println("两个结果相同");
            }else{
                System.out.println("两个结果不相同");
            }
        }

    3:AES加解密技术:

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准;是DES的升级版本,DES使用的是56位秘钥,容易被破解;

    AES 有128  192  和 256位秘钥,并且用128位分组加密和解密数据,理论上是无法破解;

    加密算法代码:

    private static final String  NAME="this is beppe zhang";          //需要加密的内容
    private static final String  SALT="tttAAEUHRUIYR9UR33RB3G4###";   //盐  调用方只要知道相应的盐才能解密
    public byte[] aesEncode() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException{
            //获取aes秘钥
            KeyGenerator generator = KeyGenerator.getInstance("AES");
            generator.init(128,new SecureRandom(SALT.getBytes()));//加盐
            SecretKey key = generator.generateKey();
            SecretKeySpec spec = new SecretKeySpec(key.getEncoded(), "AES");
            //创建密码器
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.ENCRYPT_MODE, spec);            //填充方式是 加密填充方式
            byte[] doFinal = cipher.doFinal(NAME.getBytes("utf-8"));
            return doFinal;
        }

    解密算法的代码如下:

    public String aesDecode(byte[] encodeStr) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException{
    		//获取aes秘钥
    		KeyGenerator generator = KeyGenerator.getInstance("AES");
    		generator.init(128,new SecureRandom(SALT.getBytes()));
    		SecretKey key = generator.generateKey();
    		SecretKeySpec spec = new SecretKeySpec(key.getEncoded(), "AES");
    		//
    		Cipher cipher = Cipher.getInstance("AES");
    		cipher.init(Cipher.DECRYPT_MODE, spec);
    		byte[] doFinal = cipher.doFinal(encodeStr);
    		return new String(doFinal);
    	}
    

    备注:

    如果在解密算法中:

    generator.init(128,new SecureRandom(SALT.getBytes()));没有加入相应的盐,则会报错:算法错误;

    而加密算法中没有盐是可以进行加密的,解密中是不行的;
  • 相关阅读:
    《英语语法新思维初级教程》学习笔记(七)五种基本句型
    《英语语法新思维初级教程》学习笔记(六)实义动词与(情态)助动词
    《英语语法新思维初级教程》学习笔记(五)形容词
    《英语语法新思维初级教程》学习笔记(四)数量限定词和个体限定词
    C# Redis存Session Hash存对象
    MVC中Spring.net 对基类控制器无效 过滤器控制器无效
    C# datagridview列绑定类中类的属性
    商品评分效果JavaScript
    C# SQL数据库学习时遇到到一些异常
    C语言用一维数组打印杨辉三角(原:无意中想到)
  • 原文地址:https://www.cnblogs.com/beppezhang/p/6555316.html
Copyright © 2011-2022 走看看