Base64算法的编程使用

来源:互联网 发布:推理游戏 知乎 编辑:程序博客网 时间:2024/06/08 00:26

Base64算法定义 

Base64是一种基于64个字符的编码算法,以任意8位字节序列组合的描述形式,这种形式不易直接识别。经Base64编码后的字符串的字符数是以4为单位的整数倍 


Base64密钥 


Base64编程使用 

package com.cry.base64;import java.io.IOException;import Decoder.BASE64Decoder;import Decoder.BASE64Encoder;public class Base64Util {/** * base64加密 * @param data * @return */public static String encryptBase64(byte[] data) {return new BASE64Encoder().encode(data);}/** * base64解密 * @param data * @return * @throws IOException */public static String decryptBase64(String data) throws IOException {byte[] resultBytes = new BASE64Decoder().decodeBuffer(data);return new String(resultBytes);}public static void main(String args[]) throws IOException {String data = "测试base64";String encodeData = Base64Util.encryptBase64(data.getBytes());System.out.println("加密后>>>" + encodeData);System.out.println("解密后>>" + Base64Util.decryptBase64(encodeData));;}}

Base64算法的实际应用

base64早期用于邮件传输,用于解决乱码问题。

可以通过telnet 进行邮件传输,首先开启telnet服务,然后以管理员形式打开cmd然后输入:telnet smtp.163.com 25 然后回车进入以下界面:

输入HELO 回车,然后输入AUTH LOGIN回车,输入用户名(base64)回车,输入密码(base64)回车提示成功;

输入MAIL FROM:<xxx1@163.com> 回车

输入RCPT TO:<xxx2@163.com>回车

输入DATA

输入subject : xxxxx

from:xxx1@163.com

to:xxx2@163.com

…..

如图:


java编码实现

package com.cry.base64;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;public class SMTPMain {public static void main(String[] args) {// 用户名密码String sender = "xxx1@163.com";String receiver = "xxx2@163.com";String password = "password";// 将用户名和密码进行Base64编码String userBase64 = Base64Util.encryptBase64(sender.substring(0,sender.indexOf("@")).getBytes());String passBase64 = Base64Util.encryptBase64(password.getBytes());try {Socket socket = new Socket("smtp.163.com", 25);InputStream inputStream = socket.getInputStream();OutputStream outputStream = socket.getOutputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));PrintWriter writter = new PrintWriter(outputStream, true); System.out.println(reader.readLine());// writter.println("test base64");System.out.println(reader.readLine());// AUTH LOGIN >>>Base64writter.println("AUTH LOGIN");System.out.println(reader.readLine());writter.println(userBase64);System.out.println(reader.readLine());writter.println(passBase64);System.out.println(reader.readLine());// 设置 "MAIL FROM" 和 "RCPT TO"writter.println("MAIL FROM:<" + sender + ">");System.out.println(reader.readLine());writter.println("RCPT TO:<" + receiver + ">");System.out.println(reader.readLine());// 设置 "DATA"writter.println("DATA");System.out.println(reader.readLine());writter.println("SUBJECT:hello test");writter.println("FROM:" + sender);writter.println("TO:" + receiver);writter.println("Content-Type: text/plain;charset=\"gb2312\"");writter.println();writter.println("hello world!");writter.println(".");writter.println("");System.out.println(reader.readLine());// over 断开connectwritter.println("RSET");System.out.println(reader.readLine());writter.println("QUIT");System.out.println(reader.readLine());} catch (Exception e) {e.printStackTrace();}}}

0 0
原创粉丝点击