对加密解密下面的内容一定要先理解: 甲乙双方要通信,中间的连接可能被人窃听甚至篡改.解决办法就是把传输的内容进行加密,用密文去传输,这样即使被监听也没办法知道信息的具体内容. 加密时,甲乙双方可以约定一个密码A,甲用A加密,乙用A解密,这就是对称加密.对称加密的一个问题是:密钥怎么传递给对方? 貌似没解,于是就出现了非对称加密,非对称加密时有两个密钥,就是公钥也私钥.用公钥加密的只能用私钥解密,反之用私钥加密的则只能用公钥解密.这样在流程上有点儿变化了. 原先在对称加密中,密钥没法传递,现在好了…
非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据内容进行处理得到一个签名,查看这个签名是否与对方传递的签名一致. 在非对称加密中用密钥来指公钥和私钥. RSA RAS是最早的非对称签名,是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987…
术语列表: CA:证书颁发认证机构(Certificate Authority) PEM:隐私增强邮件(Privacy Enhanced Mail),是OpenSSL使用的一种密钥文件. PKI:公钥基础设施(Public Key Infrastructure),可以理解成是一种平台标准.事实上所有的数字证书都符合PIK平台下的X.509标准.正式这个原因,我们才可以在之前的解析数字证书的时候可以用X509Certificate类.即使在X.509的大标准下,仍然存在不同编码格式的数字证书如CE…
前面的仅仅是做了编码或者摘要,下面看看真正的加密技术. DES public class DESUtil { static final String ALGORITHM = "DES"; /** * 生成文本格式的DES Key * @return * @throws Exception */ public static String getKey() throws Exception{ KeyGenerator generator = KeyGenerator.getInstance…
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha     加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了.     言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorit…
现在项目中加密与解密的方式很多,很早就想整理一下Java中加密与解密的方式,读完<<Java加密与解密的艺术>>一书.借此机会梳理一下这方面的知识点 一.基础普及 安全技术目标 安全技术目标主要包含以下五个方面: 1,保密性(Confidentiality) 保密性也被称作机密性.保密性确保数据仅能被合法的用户访问,即数据不能被未授权的第三方使用 2.完整性(Integruty) 完整性主要确保数据只能由授权方或以授权的方式进行修改,即数据在传输过程中不能被未授权方修改 3.可用性…
视频来自黑马程序员公开课 对称加密之后的密文可能存在乱码,这些乱码无法识别,信息经过加密后会变成一串毫无规律的二进制串,此时再选择一种编码方式来展示,通常是 BASE64 格式的编码. 为了解决这个问题,让将加密后的密文用Base64进行加密,加密之后的字符不再是乱码 BASE64 编码是将所有信息都编码成只用大小写字母.0-9数字以及 + 和 / 64个字符表示,所有称作 BASE64. 不同的编码所应用的场景不同,比如 UTF-8 倾向于在终端上呈现各种复杂字符包括简体.繁体中文.日文.韩文…
# MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str): # 创建md5对象 hl = hashlib.md5() hl.update(str.encode(encoding='utf-8')) return hl.hexdigest() # 将小写字母切换成大写 # return hl.hexdigest().upper() if __name__=="__main__&quo…
首先需要明确的是RSA的密钥对不能手动指定,需要通过代码系统生成 接下来我们来介绍下生成密钥对 package com.weiyuan.test; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.Public…
在项目中遇到这么一个问题: java端需要把一些数据AES加密后传给C#端,找了好多资料,算是解决了,分享一下: import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import java.security.SecureRandom; public class AesEncodeUtil { priva…