JAVA加密算法(1)

#密码学综述

##密码学基本功能

机密性、鉴别、报文完整性、不可否认性

##基本模型

sender-->加密算法 --> 密文 --> 解密算法 --> receiver

密钥源

##密码学算法分类:

1消息编码:Base64 2 3消息摘要:MD类,SHA类,MAC 4 5对称加密:DES,3DES,AES 6 7非对称加密:RSADH密钥交换 8 9数字签名:RSA signature,DSA signature

密码学五元组

明文、密文、加密算法、解密算法、密钥

加密解密算法都要使用公开算法(经过验证)

##Java编程中的常用类

(1)消息编码 BASE64Encoder,BASE64Decoder

(2)消息摘要

MessageDigest

(3)对称密码

KeyGenerator、SecretKey、Cipher

(4)非对称密码 KeyPairGenerator、KeyFactory、KeyPair、PublicKey、PrivateKey、Cipher

(5)数字签名

Signature

JDK提供的Base64编码操作

1import java.io.IOException; 2import sun.misc.BASE64Decoder; 3import sun.misc.BASE64Encoder; 4 5public class Base64Util { 6 7 public static String encrypt(byte[] data) { 8 return new BASE64Encoder().encode(data); 9 } 10 11 public static String decrypt(String data) throws IOException { 12 return new String(new BASE64Decoder().decodeBuffer(data)); 13 } 14 15 public static void main(String[] args) throws IOException { 16 String data = "1234567890"; 17 18 String result = Base64Util.encrypt(data.getBytes()); 19 System.out.println(data +" 使用Base64编码的结果: "+result); 20 21 String result2 = Base64Util.decrypt(result); 22 System.out.println(result + "使用Base64解码的结果:" +result2); 23 24 } 25} 26

运行结果:

11234567890 使用Base64编码的结果: MTIzNDU2Nzg5MA== 2MTIzNDU2Nzg5MA==使用Base64解码的结果:1234567890 3

PS1: Eclipse中找不到sun.misc.BASE64Encoder包的解决方法: 在工程的build path中先移除JRE System Library,再添加库JRE System Library,重新编译后就一切正常了。

PS2: 其他提供Base64操作的jar包, Apache Commons Codec(简称CC), Bouncy Castle(BC)

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )