`
li370604005
  • 浏览: 46441 次
  • 性别: Icon_minigender_1
  • 来自: 盐城
社区版块
存档分类
最新评论

JAVA后台数据加密

    博客分类:
  • java
阅读更多

给一个简单的加密类,使用方便快捷。当然加密的key非常规律,如果想改可以修改key变为复杂的key。

撸代码先:首先由一个加密类DES.class

需要导入的类如下:

import java.nio.charset.Charset;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

 类及方法:

public class DES
{
    //中文也是可以加密的,所以规定解密后的字符编码为UTF-8.
    private static String DEFAULT_CHARSET = "UTF-8";
    /**
     * 
     * @Title: encript
     * @Description: DES加密
     * @param @param org
     * @return byte[] 返回类型
     * @throws
     */
    public String encript(String org)
    {
        byte[] destBytes = null;

        byte[] orgBytes = org.getBytes(Charset.forName(DEFAULT_CHARSET));

        try
        {
            // DES算法要求有一个可信任的随机数源
            SecureRandom sr = new SecureRandom();
            DESKeySpec dks = new DESKeySpec(this.getKey());
            SecretKeyFactory keyFactory;
            keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey securekey = keyFactory.generateSecret(dks);

            // Cipher ciper = Cipher.getInstance("DES/CBC/NOPadding");
            Cipher ciper = Cipher.getInstance("DES");

            // ciper.init(Cipher.ENCRYPT_MODE, securekey, new
            // IvParameterSpec(this
            // .getIV()));
            ciper.init(Cipher.ENCRYPT_MODE, securekey, sr);

            destBytes = ciper.doFinal(orgBytes);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        String dest = bytesToHexString(destBytes);
        return dest;
    }

    /**
     * 
     * @Title: decript
     * @Description: DES解密
     * @param @param org
     * @return String 返回类型
     * @throws
     */
    public String decript(String org)
    {
        byte[] destBytes = null;

        byte[] orgBytes = hexStringToBytes(org);

        try
        {
            // DES算法要求有一个可信任的随机数源
            SecureRandom sr = new SecureRandom();

            DESKeySpec dks = new DESKeySpec(this.getKey());
            SecretKeyFactory keyFactory;
            keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey securekey = keyFactory.generateSecret(dks);

            // Cipher ciper = Cipher.getInstance("DES/CBC/NOPadding");
            Cipher ciper = Cipher.getInstance("DES");

            // ciper.init(Cipher.ENCRYPT_MODE, securekey, new
            // IvParameterSpec(this
            // .getIV()));
            ciper.init(Cipher.DECRYPT_MODE, securekey, sr);

            destBytes = ciper.doFinal(orgBytes);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        String dest = new String(destBytes, Charset.forName(DEFAULT_CHARSET));

        return dest;
    }

    /**
     * 
     * @Title: getKey
     * @Description: 获取密钥(16位)
     * @return byte[] 返回类型
     * @throws
     */
    private byte[] getKey()
    {
        // 固定密钥
        String key = "12345678abcdefgh";
        return key.getBytes(Charset.forName(DEFAULT_CHARSET));
    }

    /**
     * 
     * @Title: getIV
     * @Description: 获取初始向量(8位),取key的前8位,不足补0
     * @return byte[] 返回类型
     * @throws
     */
    public byte[] getIV()
    {
        byte[] key = this.getKey();
        byte[] iv = new byte[8];
        System.arraycopy(key, 0, iv, 0, 8);

        System.out.println("iv :" + iv);

        return iv;
    }

    /**
     * 
     * @Title: bytesToHexString
     * @Description: byte[]转十六进制字符串
     * @param @param src
     * @return String 返回类型
     * @throws
     */
    public String bytesToHexString(byte[] src)
    {
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0)
        {
            return null;
        }
        for (int i = 0; i < src.length; i++)
        {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2)
            {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }

    /**
     * 
     * @Title: hexStringToBytes
     * @Description: 十六进制字符串转byte[]
     * @param @param hexString
     * @return byte[] 返回类型
     * @throws
     */
    public byte[] hexStringToBytes(String hexString)
    {
        if (hexString == null || hexString.equals(""))
        {
            return null;
        }
        hexString = hexString.toUpperCase();
        int length = hexString.length() / 2;
        char[] hexChars = hexString.toCharArray();
        byte[] dest = new byte[length];
        for (int i = 0; i < length; i++)
        {
            int pos = i * 2;
            dest[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
        }
        return dest;
    }

    /**
     * 
     * @Title: charToByte
     * @Description: char转byte
     * @param @param c
     * @return byte 返回类型
     * @throws
     */
    private byte charToByte(char c)
    {
        int index = "0123456789ABCDEF".indexOf(c);
        if (index == -1)
        {
            index = "0123456789abcdef".indexOf(c);
        }
        return (byte) index;
    }

    /**
     * 
     * @Title: printHexString
     * @Description: 将指定byte数组以16进制的形式打印到控制台
     * @return void 返回类型
     * @throws
     */
    public void printHexString(byte[] bytes)
    {
        for (int i = 0; i < bytes.length; i++)
        {
            String hex = Integer.toHexString(bytes[i] & 0xFF);
            if (hex.length() == 1)
            {
                hex = '0' + hex;
            }
            System.out.print(hex.toUpperCase());
        }
    }

    public static void main(String arg[])
    {
        DES des = new DES();
        String testOrg = "我是中国人!123dfasdf ";

        // DES 加密
        String encript = des.encript(testOrg);
        System.out.println("encript data: " + encript);

        // DES 解密
        String decript = des.decript(encript);
        System.out.println("decript data: " + decript);

        // Base64 加密
        byte[] base64Encript = Base64.encode(testOrg.getBytes(Charset
                .forName(DEFAULT_CHARSET)), Base64.DEFAULT);
        System.out.println("base64 encript:"
                + new String(base64Encript, Charset.forName(DEFAULT_CHARSET)));

        // Base64 解密
        byte[] base64Decript = Base64.decode(base64Encript, Base64.DEFAULT);
        System.out.println("base64 decript:"
                + new String(base64Decript, Charset.forName(DEFAULT_CHARSET)));
    }

}

 

分享到:
评论

相关推荐

    JS前台加密,java后台解密实现

    在网络安全领域,数据加密是保障信息安全的重要手段。在这个场景中,我们关注的是“JS前台加密,Java后台解密实现”,这通常涉及到用户敏感信息如用户名和密码的安全传输。以下是关于这个话题的详细解释: 首先,**...

    前台页面敏感数据传输到后台钱的加密处理(base64加密)

    登录敏感数据传输为明文传输,数据加密传输仅在获取短信验证码时进行,但是在登录过程中未进行加密传输 用于前台页面传输数据到后台时,对敏感数据加密传输,后台在对敏感数据解密处理 本代码块中有base64加密两种...

    flash获取java后台数据

    本主题聚焦于“Flash获取Java后台数据”的技术实践,这涉及到Flash客户端与Java服务器之间的通信以及Java如何连接MySQL数据库获取数据。下面将详细介绍这个过程。 首先,Flash是一款由Adobe公司开发的多媒体创作...

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

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

    前台js后台java加密解密

    前台对from表单提交的数据进行js加密,后台对前台提交过来的代码进行解密,后台代码为java

    关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名

    RSA算法是一种非对称加密算法,它广泛应用于前端与后端的数据加密和签名,以确保信息在传输过程中的安全性。这篇博文"关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名"探讨了如何在JavaScript前端进行RSA...

    js前台通过RSA,DES加解密,java后台解密、加密

    在标题和描述中提到的"js前台通过RSA,DES加解密,java后台解密、加密",这是一个关于在Web应用程序中实现安全通信的常见实践。这里涉及到两个主要的加密算法:RSA和DES,以及它们在前端JavaScript和后端Java中的...

    AES加密解密的前台js文件和后台java工具类

    AES(Advanced Encryption Standard)是目前广泛应用的一种对称加密算法,为数据加密提供了高效且安全的保护。这个压缩包文件包含了用于前台JS和后台Java进行AES加密解密的工具类,使得在客户端与服务器端的数据传输...

    Javascript加密,java后台解密Demo

    这个Demo展示了客户端和服务器端之间安全通信的一个基本流程,对于理解Web应用中的数据加密和解密机制有着很好的实践意义。在实际开发中,还需要考虑更多的安全因素,如防止中间人攻击、使用安全的密钥管理和协议,...

    rsa前端加密,java后台解密

    在"rsa前端加密,java后台解密"的场景中,前端使用RSA公钥对数据进行加密,然后将加密后的数据发送给后端,后端用私钥进行解密。这样可以确保数据在传输过程中的安全性,因为即使数据被截获,没有私钥也无法解密。 ...

    商城小程序JAVA后台

    "商城小程序JAVA后台"是一个基于Java技术开发的用于支持电商小程序运行的后端系统。这个系统的核心目标是为前端小程序提供稳定、高效的数据处理和服务支持,实现用户购物、支付、订单管理等一系列功能。以下是该系统...

    RSA前台加密java后台解密项目

    这个项目“RSA前台加密java后台解密”是关于如何在Web应用中利用RSA算法实现前端数据加密,然后在后端进行解密的安全通信机制。以下是关于RSA算法及其在Java和JavaScript中应用的详细解释。 **RSA算法基础** RSA...

    安卓RSA加密和解密,和后台能够进行数据互通的算法

    android平台的RSA加密和解密算法,和后台JAVA加密和解密算法有所不同,能够和后台进行数据互通。完美解决后台的加密数据,android平台解密后乱码问题,也不会出现android平台加密密文,后台解析出现乱码问题

    JAVA使用数字证书加密文件

    在Java编程环境中,数字证书是用于安全通信的重要工具,它们包含了一对密钥——公钥和私钥,常用于加密和解密数据。RSA是一种非对称加密算法,基于两个大素数的乘积,一个用于加密,另一个用于解密。在给定的场景中...

    微信小程序+Java后台完整代码

    Java后台则承担数据存储、业务逻辑处理、接口提供等核心功能。 1. **小程序开发**:微信小程序的开发使用了微信提供的WXML(微信标记语言)和WXSS(微信样式表)来构建页面结构和样式,以及JavaScript来处理业务...

    android ios java后台通用DES base64加密

    总之,"android ios java后台通用DES base64加密"这个话题涉及了两个关键的技术点:DES加密用于保护数据的隐私,而Base64编码则使得加密后的数据能在文本环境中顺利传输。理解并掌握这两个技术对于任何IT专业人员来...

    DES加密前端js和后台java互通代码

    DES(Data Encryption Standard)是一种经典的对称加密算法,它的全称是数据加密标准。在本文中,我们将深入探讨DES加密的原理以及如何在前端JavaScript和后端Java之间实现互通。 DES算法基于Feistel结构,它将明文...

    微信支付-微信小程序+Java后台代码

    在这个项目中,我们结合了微信小程序和Java后台技术,实现了一个完整的微信支付流程。以下将详细阐述涉及的知识点: 1. **微信小程序**:微信小程序是一种轻量级的应用开发框架,允许开发者在微信内部创建和运行...

    java后台服务程序.rar

    Java后台服务程序通常指的是在服务器端运行的Java应用程序,它们主要负责处理来自客户端的请求,进行数据处理,以及提供各种服务。这些服务可能是持续运行的,例如Web服务器、应用服务器、消息队列服务等。本压缩包...

    flutter加密java解密

    在Flutter和Java混合开发的场景中,"flutter加密java解密"的主题涉及到如何在Flutter客户端与Java后台之间进行安全的数据交互,确保信息在传输过程中不被窃取或篡改。这里我们将详细讨论如何实现这一目标,并保证App...

Global site tag (gtag.js) - Google Analytics