zoukankan      html  css  js  c++  java
  • 常见的加密和解密算法—BASE64

    一、BASE64加密和解密概述

      Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

          然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

    为解决此问题,可采用一种用于URL的改进Base64编码,它不仅在末尾去掉填充的'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
     
       BASE64 是对称的加密算法(PS:对称加密就是加密用的密码和解密用的密码是一样的,非对称就是加密和解密用的密钥不一样)
     
    参考连接:BASE64加密和解密
     
     
    二、Java实现MD5加密解密
    1、maven 引入apache的jar(不是maven项目,去网上下一个jar手动引入)
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-lang3</artifactId>
                    <version>3.3.2</version>
                </dependency>

    2、MD5使用代码

    package com.jd.test;
    
    import org.apache.commons.codec.binary.Base64;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import java.io.UnsupportedEncodingException;
    
    /**
     * 
     *  BASE64 通用类
     *
     * @author 浩令天下
     * @since 2017.04.15
     * @version 1.0.0_1
     * 
     */
    public class Base64Util {
    
        private static final Logger logger = LoggerFactory.getLogger(Base64Util.class);
    
        /**
         * 对给定的字符串进行base64解码操作
         */
        public static String decodeData(String inputData) {
            try {
                if (null == inputData) {
                    return null;
                }
                return new String(Base64.decodeBase64(inputData.getBytes("utf-8")), "utf-8");
            } catch (UnsupportedEncodingException e) {
                logger.error(inputData, e);
            }
    
            return null;
        }
    
        /**
         * 对给定的字符串进行base64加密操作
         */
        public static String encodeData(String inputData) {
            try {
                if (null == inputData) {
                    return null;
                }
                return new String(Base64.encodeBase64(inputData.getBytes("utf-8")), "utf-8");
            } catch (UnsupportedEncodingException e) {
                logger.error(inputData, e);
            }
    
            return null;
        }
    
    
        /**
         * 测试入口
         * 
         * @param args
         */
        public  static void main(String args[]){
            String encodeStr=Base64Util.encodeData("龙不吟,虎不啸");
            System.out.println("encodeStr="+encodeStr);
            String decodeStr=Base64Util.decodeData(encodeStr);
            System.out.println("decodeStr="+decodeStr);
        }
    
    }

    常见加密工具参考链接:

    1、常见的加密和解密算法—MD5

    2、常见的加密和解密算法—BASE64

    3、常见的加密和解密算法—DES

    4、常见的加密和解密算法—AES

  • 相关阅读:
    Game的基本元素.[小糊涂的灵感]
    J2ME图书介绍 [小糊涂的灵感]
    j2me 这个论坛好一点.[小糊涂的灵感]
    Frame rate test for tilebased games 测试结果.[小糊涂的灵感]
    源码方式在ubuntu系统上安装ruby1.9.2
    模块全解======>>ruby的类是单继承生物、所以出现了module、实现了多继承
    在ubuntu下安装rails3.0
    在ubuntu下编写运行shell脚本
    在linux下开远程桌面访问windows的解决方法
    在命令行中打开sqlite的数据库
  • 原文地址:https://www.cnblogs.com/xiohao/p/6715130.html
Copyright © 2011-2022 走看看