阅读本文约“2.5分钟”

Java加解密系列,介绍Java加密解密的基础知识,并使用Base64算法实现加解密。

对于加密在企业中是非常常见的,就如邮件的传输,每个企业都会有自己设置安全方式,设置加密方式、SSL等、修改邮件端口,其目的都是为了实现加解密,保证数据的安全传输。

Base64算法是一种初级简单的加解密方式。其创始也是有邮件演进而来的。

密码的常用术语

——明文:待加密信息

——密文:经过加密后的明文

——加密:明文转为密文的过程

——加密算法:明文转为密文的转换算法

——加密密钥:通过加密算法进行加密操作用的密钥

——解密:将密文转为明文的过程

——解密算法:密文转为明文的算法

——解密密钥:通过解密算法进行解密操作用的密钥

——密码分析:截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程

——主动攻击:攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。(对密文具有破坏作用)

——被动攻击:对一个保密系统采取截获密文并对其进行分析和攻击。(对密文没有破坏作用)

——密码体制:由明文空间、密文空间、密钥空间、加密算法和解密算法五部分构成。

——密码协议:也称安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全的服务

——密码系统:指用于加密、解密的系统

——柯克霍夫原则:数据的安全基于密钥而不是算法的保密。即系统的安全取决于密钥,对密钥保密,对算法公开。——现代密码学设计的基本原则

密码分类

时间:

——古典密码:以字符为基本加密单位

——现代密码:以信息块为基本加密单元

保密内容:

受限制算法:算法的保密性基于保持算法的秘密(军事领域)-古典密码

基于密钥算法:算法的保密性基于对密钥的保密-现代密码

密码体制:

对称密码(单钥密码或私钥密码)

非对称密码(双钥密码或公钥密码)

明文处理:

分组密码:指加密时将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。多用于网络加密。

流密码:也成序列密码。指加密时每次加密一位或者一个字节明文

散列函数用来验证数据的完整性(并不是用来加解密)

特点:长度不受限制、哈希值容易计算、散列运算过程不可逆

散列函数相关算法:消息摘要算法MD5等、SHA-安全散列算法、MAC-消息认证码算法

数字签名:主要是针对以数字的形式存储的消息进行的处理

OSI与TCP/IP安全体系

OSI(Open System Interconnection)

7层网络通信(物理层-》数据链路层-》网络层-》传输层-》会话层-》表示层-》应用层)

如果把网络通信视为Y轴,那么对应的安全机制就是X轴,分别是:加密机制、数字签名机制、访问控制机制、数据完整性机制、认证机制、业务流填充机制、路由控制机制、公证机制

而Z轴则是安全服务:认证(鉴别)、访问控制服务、数据保密性服务、数据完整性服务、抗否认性服务

而TCP/IP安全体系则有所不同。

其网络通信:网络接口层、网络层、传输层、应用层

安全体系结构:网络接口层安全、网络层安全、传输层安全、应用层安全

相关代码实例:

<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on --><dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcprov-jdk15on</artifactId>
  <version>1.59</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
  <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.11</version>
</dependency>

public class Base64 {

private static String src = "myself security base64";

public static void main(String[] args){
       jdkBase64();
   }

public static void jdkBase64(){
       BASE64Encoder encoder = new BASE64Encoder();
       String encode =  encoder.encode(src.getBytes());
       System.out.println("encode:"+encode);

BASE64Decoder decoder = new BASE64Decoder();
       try {
           System.out.println(new String(decoder.decodeBuffer(encode)));
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

public static void commonBase64(){
       byte[] encodeBytes = org.apache.commons.codec.binary.Base64.encodeBase64(src.getBytes());
       System.out.println("encode:"+new String(encodeBytes));

}

}

Java实现Base64加密的更多相关文章

  1. Java的Base64加密原理

    出自:   http://www.cnblogs.com/winner-0715/p/5920269.html http://www.cnblogs.com/koliop090/p/5203553.h ...

  2. Java android DES+Base64加密解密

    服务器与客户端加密解密传输, 中间遇到各种坑,客户端无论用AES还是DES解密时都会出现错误,后来才看到好多人说要用AES/DES加完密后还要BASE64加密,照做时发现android和java的Ba ...

  3. (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题

    我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...

  4. Java中使用BASE64加密&解密

    package com.bao.tools.encryption; import java.io.IOException; import org.junit.Test; import sun.misc ...

  5. Java Base64加密、解密原理Java代码

    Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是 ...

  6. Java Base64 加密解密

    使用JDK的类 BASE64Decoder  BASE64Encoder package test; import sun.misc.BASE64Decoder; import sun.misc.BA ...

  7. Java实现 Base64、MD5、MAC、HMAC加密

    开始对那些基本的加密还不怎么熟练,然后总结了些,写了一个测试:支持 Base64.MD5.MAC.HMAC加密,长话短说,我们都比较喜欢自己理解,看代码吧! 采用的输UTF-8的格式... packa ...

  8. URL中增加BASE64加密的字符串引起的问题(java.net.MalformedURLException:Illegal character in URL)

    序 昨天在做一个 Demo 的时候,因为是调用第三方的接口,採用的是 HTTP 的通信协议,依照文档上的说明,须要把參数进行加密后增加到 URL 中.可是,就是这个看似普普通通的操作,却让我着实费了非 ...

  9. password学3——Java BASE64加密解密

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之中的一个,大家能够查看RFC2045-RFC2049.上面有MIME的具体规范.Base64编码可用于在HTTP环境下传递较长的标识信息 ...

随机推荐

  1. 前端 高级 (二十五)vue2.0项目实战一 配置简要说明、代码简要说明、Import/Export、轮播和列表例子

    一.启动服务自动打开浏览器运行 二.配置简要说明 1.node_modules 安装好的依赖文件,中间件等,所在位置 2.package.jason 配置当前项目要安装的中间件和依赖文件 { &quo ...

  2. 解析分享链接在微信内转发防封API接口的实现原理

    域名被微信封了怎么办?相信这是很多做微信的朋友的疑惑,本人也是做防封的,特此写一篇文章,写给域名被微信封的.被秒封的朋友来看.简单个大家讲一下防封原理和实现方式. 域名拦截因素 我们先来了解一下域名为 ...

  3. ORACLE提交事务回滚

    execute执行后 可以回滚 commit提交后 闪回恢复原来的数据 其实Oracle提交数据是分两步操作的,第一步execute执行,第二步commit提交.对应的PL\SQL也是要先点execu ...

  4. Must Know Tips/Tricks in Deep Neural Networks

    Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei)   Deep Neural Networks, especially C ...

  5. JVM之垃圾收集器与内存分配回收策略(二)

    上一篇JVM垃圾收集器与内存分配策略(一),下面是jdk1.7版本的垃圾收集器之间的关系,其中连线两端的两种垃圾收集器可以进行搭配使用,下面来总结一下这些收集器的一些特点以及关系. 一.Serial收 ...

  6. Python 操作excel之 openpyxl模块

    1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win-amd64-py2.7.exe · font(字体 ...

  7. Python 爬虫修养-处理动态网页

    Python 爬虫修养-处理动态网页 本文转自:i春秋社区 0x01 前言 在进行爬虫开发的过程中,我们会遇到很多的棘手的问题,当然对于普通的问题比如 UA 等修改的问题,我们并不在讨论范围,既然要将 ...

  8. ajax jsonp请求报错not a function的解决方案

    概述 最近工作中使用ajax,有时会报json4 is not a function的错误,有时又不会报错.找了很久,网上说是因为多次请求同一个资源导致的,但是我检查了自己的代码,对于重复资源并没有重 ...

  9. Python之父:为什么操作符很有用?

    这是我在python-ideas上发布的一些东西,但我认为这些很有趣,应该分享给更多的人. 最近有很多关于合并两个dict(词典)的运算符的讨论. 这促使我思考为什么有些人喜欢运算符,我想起了30多年 ...

  10. Spring autowire自动装配 ByType和ByName

    不使用自动装配前使用的是类的引用: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...