Base64算法的编程使用
来源:互联网 发布:c语言的一些基础指令 编辑:程序博客网 时间:2024/06/03 22:47
最近在学Java加密算法的编程使用,,为了加深自己的印象,特意再次回顾一下,做到温故而知新!既然学习Java加密算法,首先得知道什么是密码学?
- 密码学的基本功能:机密性、鉴别、报文完整性、不可否认性。(不可否认性是啥子呢)
- 基本模型:
- Java密码学算法的分类
消息编码:Base64
消息摘要:MD类、SHA类、MAC
对称密码:DES、3DES、AES
非对称密码:RSA、DH密钥交换
数字签名:RSASignature、DSASignature
本文基本就从以上地算法进行回顾。。 密码学五元组:
明文、密文、加密算法、解密算法、秘钥
注意:加解密算法都是公开的,但秘钥是不可公开的,否则就失去的加密的意义。秘钥不等于密码,密码等于秘钥加规则,,规则可以理解为算法。对称密码(传统密码)与非对称密码
对称密码:加解密使用相同的秘钥的密码体系
非对称密码:加解密使用不同的秘钥—-公钥和私钥- Java编程中常用的类
1)消息编码
BASE64Encoder、BASE64Decoder
2)消息摘要
MessageDigest
3)对称密码
KeyGenerator、SecretKey、Cipher
4)非对称密码
KeyPairGenerator、KeyFactory、KeyPair、PublicKey、PrivateKey、Cipher
5)数字签名
Signature
一、Base64算法定义
Base64开始是应用于解决电子邮件传输问题,是一种基于64个字符的编码算法,以任意8位字节序列组合的描述形式,这种形式不易直接识别。经Base64编码后的字符串的字符数是以4为单位的整数倍。
二、Base64的字符映射表
三、Base64的加解密编程
Base64算法在JDk中有BASE64Encoder()和BASE64Encoder
1)加密:byte[] data = “jikexueyuan”.getBytes();String result = new BASE64Encoder().encode(data);2)解密:byte[] result = new BASE64Decoder().decodeBuffer(data);
使用Base64算法模拟邮箱登录系统
package key.base64;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;/** * 使用base64编码制作邮件发送系统 * * @author mike * */public class STMPMain { public static void main(String[] args) { // 邮箱账号和密码 String sender = "18393817737@163.com"; String receiver = "1327876510@qq.com"; String password = "lalalalla";// sender账号的密码 // 将用户名和密码进行base64编码 String userBase64 = Base64Util.encryptBase64(sender.substring(0, sender.indexOf('@')).getBytes()); String passwordBase64=Base64Util.encryptBase64(password.getBytes()); //定义socket的25号端口远程连接邮箱服务器 Socket socket; try { socket = new Socket("smtp.163.com", 25); //定义输入流用来读取服务器返回给我们的信息 InputStream inputStream=socket.getInputStream(); BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream)); //输出流用来向服务器发送相应的信息 OutputStream outputStream=socket.getOutputStream(); PrintWriter writer=new PrintWriter(outputStream,true);//自动刷新输出流 //打印邮箱服务器返回的信息 System.out.println(reader.readLine()); //HELO 与邮箱服务器打个招呼并告知客户端使用的机器,可以随便填写 writer.println("HELO hi"); System.out.println(reader.readLine());//服务器响应的结果 //AUTO LOGIN >>>base64 writer.println("AUTH LOGIN");//使用身份认证登录指令 System.out.println(reader.readLine()); writer.println(userBase64);//发送加密过的用户名登录 System.out.println("user:"+userBase64); System.out.println(reader.readLine()); System.out.println("password:"+passwordBase64); writer.println(passwordBase64);//发送加密过的密码 System.out.println(reader.readLine()); //如果没有问题表示认证登录成功 System.out.println("登陆成功!"); //SET MAIL FROM AND RCPT TO writer.println("MAIL FROM:<"+sender+">");//发送发送方的邮箱给服务器 System.out.println(reader.readLine()); writer.println("RCPT TO:<"+receiver+">");//发送接收方的信息给邮箱服务器 System.out.println(reader.readLine()); //SET DATA writer.println("DATA"); System.out.println(reader.readLine()); writer.println("SUBJECT:嘱咐你学习的邮件"); writer.println("FROM:"+sender); writer.println("TO:"+receiver); writer.println("Content-Type:text/plain;charset=\"utf-8\""); writer.println(); writer.println("好好学习,天天向上!good good study,day day up!"); writer.println(".");//以.作为结尾 writer.println(""); System.out.println(reader.readLine()); //中断和服务器的连接 writer.println("RSET"); System.out.println(reader.readLine()); writer.println("QUIT"); System.out.println(reader.readLine()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
0 0
- Base64算法的编程使用
- Base64算法的编程使用
- java基础---->Base64算法的使用
- java基础---->Base64算法的使用
- java基础---->Base64算法的使用
- base64的算法详解
- RSA算法的Java实现及Base64的正确使用
- java的Base64算法详解以及Base64
- 使用混合脚本编程来实现的Base64编码
- 使用混合脚本编程来实现的Base64解码
- java中Base64编码解码的编程使用
- Base64的使用
- 使用原生的Base64
- Base64的简单使用
- GTM BASE64的使用
- base64的使用
- Base64的使用
- Base64算法的简单实现
- javascript获取指定链接GET参数函数
- copy与mutableCopy
- 单例模式
- 面试题
- JVM:如何分析线程堆栈
- Base64算法的编程使用
- java序列化
- 常见机器学习方法
- ionic 集成支付插件
- eclipse中egit插件使用
- ThinkPHP - 模型
- 单例整理
- HDU 1710 Binary Tree Traversals(已知先序中序求后序)
- iOS 集合的深复制与浅复制