`

JAVA加密解密示例

    博客分类:
  • JAVA
阅读更多
可用于URL传入汉字作为参数时,发生乱码的情况
import java.io.UnsupportedEncodingException;

public class Encode {
    public static final String ALLOWED_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.!~*'()";
    
    public static String encode(String str){
         String enstr="";
         String ling="0000";
         char[] data=str.toCharArray();
            for (int i = 0; i < data.length; i++) {
                String unicode=Integer.toHexString(data[i]);
                enstr+=ling.substring(0, 4-unicode.length())+Integer.toHexString(data[i]);
            }                
         return enstr;
    }
    
    public static String decode(String str){
         byte[] baKeyword = new byte[str.length()/2];
         for(int i = 0; i < baKeyword.length; i++)
         {
             try{
                 baKeyword[i] = (byte)(0xff & Integer.parseInt(str.substring(i*2, i*2+2),16));
             }catch(Exception e){
                 e.printStackTrace();
             }
         }
         try {
             str = new String(baKeyword, "utf-16");//UTF-16le:Not
         } catch (Exception e1)  {
             e1.printStackTrace();
         }
         return str;
    }

    
    public static String detialEncode(String sql){        
        return sql.replaceAll("'", ":").replaceAll("  ", " ").replaceAll("%", "@");
    }
    public static String detialDecode(String sql){        
        return sql.replaceAll(":", "'").replaceAll("@","%");
    }


    ////实现js encodeURI 效果
    public static String encodeURI(String input) {

        if (input == null || "".equals(input)) {

            return input;

        }

 

        int l = input.length();

        StringBuilder o = new StringBuilder(l * 3);

        try {

            for (int i = 0; i < l; i++) {

                String e = input.substring(i, i + 1);

                if (ALLOWED_CHARS.indexOf(e) == -1) {

                    byte[] b = e.getBytes("utf-8");

                    o.append(getHex(b));

                    continue;

                }

                o.append(e);

            }

            return o.toString();

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        return input;

    }

 

    private static String getHex(byte buf[]) {

        StringBuilder o = new StringBuilder(buf.length * 3);

        for (int i = 0; i < buf.length; i++) {

            int n = (int) buf[i] & 0xff;

            o.append("%");

            if (n < 0x10) {

                o.append("0");

            }

            o.append(Long.toString(n, 16).toUpperCase());

        }

        return o.toString();

    }

 

    public static String dencodeURI(String encodedURI) {

        char actualChar;

 

        StringBuffer buffer = new StringBuffer();

 

        int bytePattern, sumb = 0;

 

        for (int i = 0, more = -1; i < encodedURI.length(); i++) {

            actualChar = encodedURI.charAt(i);

 

            switch (actualChar) {

            case '%': {

                actualChar = encodedURI.charAt(++i);

                int hb = (Character.isDigit(actualChar) ? actualChar - '0'

                        : 10 + Character.toLowerCase(actualChar) - 'a') & 0xF;

                actualChar = encodedURI.charAt(++i);

                int lb = (Character.isDigit(actualChar) ? actualChar - '0'

                        : 10 + Character.toLowerCase(actualChar) - 'a') & 0xF;

                bytePattern = (hb << 4) | lb;

                break;

            }

            case '+': {

                bytePattern = ' ';

                break;

            }

            default: {

                bytePattern = actualChar;

            }

            }

 

            if ((bytePattern & 0xc0) == 0x80) { // 10xxxxxx

                sumb = (sumb << 6) | (bytePattern & 0x3f);

                if (--more == 0)

                    buffer.append((char) sumb);

            } else if ((bytePattern & 0x80) == 0x00) { // 0xxxxxxx

                buffer.append((char) bytePattern);

            } else if ((bytePattern & 0xe0) == 0xc0) { // 110xxxxx

                sumb = bytePattern & 0x1f;

                more = 1;

            } else if ((bytePattern & 0xf0) == 0xe0) { // 1110xxxx

                sumb = bytePattern & 0x0f;

                more = 2;

            } else if ((bytePattern & 0xf8) == 0xf0) { // 11110xxx

                sumb = bytePattern & 0x07;

                more = 3;

            } else if ((bytePattern & 0xfc) == 0xf8) { // 111110xx

                sumb = bytePattern & 0x03;

                more = 4;

            } else { // 1111110x

                sumb = bytePattern & 0x01;

                more = 5;

            }

        }

        return buffer.toString();

    }
} 
分享到:
评论

相关推荐

    java 加密解密 示例

    总的来说,这个Java加密解密示例提供了一个实际应用加密技术的起点,对于理解和实践Java安全编程有着积极的作用。通过学习和研究这个示例,开发者能够更好地理解如何在实际项目中保护敏感数据的安全。

    Java中3DES加密解密示例(封装byte数组16进制互转)

    Java 中的 3DES 加密解密示例(封装 byte 数组和 16 进制字符串互转) 在 Java 中,3DES 加密是一种常用的加密算法,它可以将明文数据转换为密文数据,以保护数据的安全性。在本示例中,我们将展示如何使用 3DES ...

    Java实现的RSA加密解密算法示例

    Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...

    java加密解密工具

    以下是一个简单的AES加密解密示例: ```java import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.security.SecureRandom; public class AESEncryptDemo ...

    JAVA数据加密解密的实例

    本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...

    java实现的RC4加密解密算法示例

    "java实现的RC4加密解密算法示例" RC4加密解密算法是Symmetric-key block cipher的一种,使用同一个密钥进行加密和解密。java实现的RC4加密解密算法可以通过以下步骤实现: 1. 初始化数组:创建一个大小为256的...

    java加密解密zip压缩包

    以上代码示例展示了如何在Java中实现ZIP压缩包的加密和解密。需要注意的是,加密后的ZIP文件需要保存密码以供解密时使用。此外,加密的强度取决于所选的加密算法和密码的复杂性。在实际应用中,应确保密码的安全存储...

    java使用Hex编码解码实现Aes加密解密功能示例

    在本文示例中,我们关注的是如何利用Java的Hex编码和解码来处理AES加密和解密的过程。 首先,让我们了解什么是Hex编码。Hex编码是一种将二进制数据转换为可打印字符的表示方式,每个字节被转换为两个十六进制数字...

    SM2加密解密java代码完整示例

    国产加密算法SM2加密解密java代码完整示例。里面有加密解密的示例,生成秘钥的示例,本人亲测有效。默认maven环境编译。若无maven环境,里面也上传了相关依赖jar包。

    JAVA加密和解密的艺术(第二版).zip

    在实际应用部分,书中的源代码部分(Java加密与解密的艺术--源代码.rar)提供了详细的示例,覆盖了SSL/TLS协议的实现,网络通信的安全,以及PBE(Password-Based Encryption)和PKCS#7等标准的使用。这些代码实例...

    java实现文件加密解密

    "java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...

    RSA加密解密示例工程

    RSA加密解密示例工程是一个专门针对Android平台设计的学习资源,旨在帮助开发者深入理解并实践RSA加密算法。RSA,全称Rivest-Shamir-Adleman,是一种非对称加密技术,广泛应用于网络安全、数据保护等领域。该示例...

    JAVA加密解密

    描述中提到的“博文链接”指向了ITEYE博客上的一篇文章,虽然具体内容未提供,但我们可以推断文章可能涉及了Java加密解密的实际应用、代码示例以及可能遇到的问题和解决方案。 标签"源码"暗示我们可能会看到一些...

    Java加密解密

    以下是一个简单的RSA加密解密示例: ```java import java.security.*; import javax.crypto.Cipher; public class RSAExample { public static KeyPair generateKeyPair() throws NoSuchAlgorithmException { ...

    java和javascript之间的DES加密解密

    Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...

    Java加密与解密的艺术.mobi

    若要构建安全坚固的Java企业级应用,不仅要深入了解每种算法的原理并将它们综合运用,而且还要悟透Java加密与解密技术的本质。全书包含3个部分,基础篇对Java企业级应用的安全知识、密码学核心知识、与Java加密相关...

    Java AES256加密解密示例代码

    Java AES256加密解密示例代码 Java AES256加密解密示例代码主要介绍了Java AES256加密解密示例代码,通过示例代码对大家的学习或者工作具有一定的参考学习价值。 什么是 AES 256? 高级加密标准(英语:Advanced ...

Global site tag (gtag.js) - Google Analytics