Java代码Base64加密解密

程序员在使用加密和解密,一般情况下是为了登录或者某些重要的信息而做的特殊处理。

(一)简单的java加密算法有:

1.BASE64 严格地说,属于编码格式,而非加密算法

2.MD5(Message Digest algorithm 5,信息摘要算法)

3.SHA(Secure Hash Algorithm,安全散列算法)

4.HMAC(Hash Message Authentication Code,散列消息鉴别码)

(二)对称算法和不对称算法

1. 对称加密(Symmetric Cryptography)

       对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。 
       对称加密解密时间都是非常快的。 
       2.非对称加密(Asymmetric Cryptography) 
       非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个(公钥)进行加密,而解密则需要另一个(私钥)密钥。 
       非对称解密是非常慢的,很简单的数据可能都要几个小时!

3.常见的对称加密和非对称加密算法

(1)对称加密算法:

       在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。

       DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 
       3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 
       AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

(2)非对称常用算法

       RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。

(三)其他

       Base64还不算加密算法,其实就是一种编码转换; 
       MD5、SHA是非对称加密算法

(二)代码

1.加密代码:

加密前字符串:String key="mykey"; 
byte[] bt = key.getBytes(); 
加密后字符串:String newKey=(new BASE64Encoder()).encodeBuffer(bt); 
  • 1
  • 2
  • 3

2.解密代码:

加密后的字符串:String newkey="*****"; 
byte[] bt = (new BASE64Decoder()).decodeBuffer(key); 解密后的字符串: String key=new String(bt); 
//如果出现乱码可以改成: String(bt, "utf-8")或 gbk
  • 1
  • 2
  • 3

3.具体调用代码示例

package com.example.encryption;

import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;

import java.io.IOException;

/**
 * 加密解密程序示例
 * <p/>
 * <p/>
 * /**
 * 编码工具类
 * 1.将byte[]转为各种进制的字符串
 * 2.base 64 encode
 * 3.base 64 decode
 * 4.获取byte[]的md5值
 * 5.获取字符串md5值
 * 6.结合base64实现md5加密
 * 7.AES加密
 * 8.AES加密为base 64 code
 * 9.AES解密
 * 10.将base 64 code AES解密
 *
 * @author uikoo9
 * @version 0.0.7.20140601
 */
public class EncryptionDemo {

    public static void main(String[] args) {
        String s = "我的字符串seasonszx";
        System.out.println("原字符串:" + s);
        String encryptString = encryptBASE64(s);
        System.out.println("加密后:" + encryptString);
        System.out.println("解密后:" + decryptBASE64(encryptString));
    }

    /**
     * BASE64解密
     *
     * @param key
     * @return
     * @throws Exception
     */
    public static String decryptBASE64(String key) {
        byte[] bt;
        try {
            bt = (new BASE64Decoder()).decodeBuffer(key);
            return new String(bt);//如果出现乱码可以改成: String(bt, "utf-8")或 gbk
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * BASE64加密
     *
     * @param key
     * @return
     * @throws Exception
     */
    public static String encryptBASE64(String key) {
        byte[] bt = key.getBytes();
        return (new BASE64Encoder()).encodeBuffer(bt);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

       程序运行后结果: 
原字符串:我的字符串seasonszx 
加密后:5oiR55qE5a2X56ym5Liyc2Vhc29uc3p4 
解密后:我的字符串seasonszx




































































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值