非对称加密算法

Java 加密 AES 对称加密算法

ε祈祈猫儿з 提交于 2020-01-04 03:36:47
版权声明:本文为博主原创文章,未经博主允许不得转载。 【AES】 一种对称加密算法,DES的取代者。 加密相关文章见: Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA 【代码】 代码比较多,有一部分非本文章内容代码,具体自己看吧。 [java] view plain copy package com.uikoo9.util.encrypt; import java.math.BigInteger; import java.security.MessageDigest; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import com.uikoo9.util.QStringUtil; /** * 编码工具类 * 1.将byte[]转为各种进制的字符串 * 2.base 64 encode * 3.base 64 decode * 4.获取byte[]的md5值 * 5.获取字符串md5值 * 6

常见加密算法介绍

半城伤御伤魂 提交于 2020-01-03 05:04:41
简介 做为一个开发人员,了解一些加密算法是很有必要的,通过加密算法,我们能完成数据通信的三个目标,分别为数据的保密性、数据的完整性、源和目标用户的合法性,而常见的加密算法类型大体可以分为三类: 对称加密 , 非对称加密 , 单向加密 对称加密算法 加密算法与解密算法的秘钥key一致,即加密解密的密钥一致。在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方收到加密后的报文后,结合密钥和解密算法解密组合后得出原始数据。由于加解密算法是公开的,因此在这过程中,密钥的安全传递就成为了至关重要的事了。而密钥通常来说是通过双方协商,以物理的方式传递给对方,然后一旦这过程出现了密钥泄露,则数据内容就会被暴露出来 对称加密算法拥有着算法公开、计算量小、加密速度和效率高得特定,但是也有着密钥单一、密钥管理困难等缺点 常见的对称加密算法: DES:分组式加密算法,以64位为分组对数据加密,加解密使用同一个算法。 3DES:三重数据加密算法,对每个数据块应用三次DES加密算法。 AES:高级加密标准算法,是美国联邦政府采用的一种区块加密标准,用于替代原先的DES,目前已被广泛应用。 非对称加密算法 非对称加密算法采用公钥和私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密

HTTPS原理简述

孤人 提交于 2020-01-01 19:40:25
角色: A,B,Server,Client,中间窃听者,数字证书签发机构(CA) 工具:对称加密算法,非对称加密算法,数字签名,数字证书 第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。 第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。 第三步,爱丽丝确认数字证书(对证书信息进行md5或者hash后的编号==用证书机构的公钥对加密的证书编号解密后的证书编号)有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥(鲍勃的公钥),加密这个随机数,发给鲍勃。 第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。 第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。 https要使客户端与服务器端的通信过程得到安全保证,必须 使用对称加密算法 并且 每个客户端的算法都不一样 ,需要一个协商过程,但是 协商对称加密算法的过程,需要使用非对称加密算法来保证安全 ,直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用

Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解

前提是你 提交于 2019-12-24 13:43:05
Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解 说明:Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解,加密算法,是现在每个软件项目里必须用到的内容。 广泛应用在包括了用户登入、数字签名、数据传输等多个场合。今天我把常见的加密算法全部整理在这里,供大家学习参考。 首先,大家要知道加密算法能干什么,利用加密算法来对数据通信的过程进行加密传输是一种最常见的安全手段。利用该手段能够达到一下三个目的: 1、数据保密性,防止用户数据被窃取或泄露; 2、数据完整性,防止用户传输的数据被篡改; 3、通信双方身份确认,确保数据来源合法; 常见的加密算法 目前常见的加密算法分类如下: 各种加密算法对比如下: 1,单向散列加密算法: 2,对称加密算法: 3,非对称加密算法: 加密算法详解 一,单向散列加密 单向散列加密算法常用于提取数据,验证数据的完整性。发送者将明文通过单向加密算法加密生成定长的密文串,然后将明文和密文串传递给接收方。接收方在收到报文后,将解明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。其次也用于密码加密传递存储。单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应。 1.1

浅谈DES加密算法

折月煮酒 提交于 2019-12-23 00:37:43
一、DES加密算法介绍 1、要求密钥必须是8个字节,即64bit长度 2、因为密钥是byte[8] , 代表字符串也可以是非可见的字节,可以与Base64编码算法一起使用 3、加密、解密都需要通过字节数组作为数据和密钥进行处理 二、对称加密 DES加密算法属于对称加密。 即利用指定的密钥,按照密码的长度截取数据,分成数据块,和密钥进行复杂的移位、算数运算或者数据处理等操作,形成只有特定的密码才能够解开的数据。 加密与解密用的是同一个密钥 三、相关类 1、Cipher: Java/Android要使用任何加密,都需要使用Cipher这个类 使用Cipher进行加密,解密处理,需要创建实例对象并初始化。采用工厂模式创建对象 Cipher cipher = Cipher.getInstance("算法名称"); cipher.init(加密/解密模式,Key秒); 2、Key: Key类是Java加密系统所有密码的父类 3、SecretKeyFactory: 对于DES加密解密,使用SecretKeyFactory生成,生成时需指定DESKeySpec 四、加密代码步骤 1. 获取Cipher对象,设置加密算法 Cipher cipher = Cipher.getInstance("DES"); 2、准备Key对象   2.1 DES加密算法使用DESKeySpec类

webservice ssl 1 SSL/TLS 协议入门

我的未来我决定 提交于 2019-12-22 14:03:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> SSL(Secure Sockets Layer,安全套接层),及其继任者 TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。 SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 SSL协议提供的服务主要有:   1)认证用户和服务器,确保数据发送到正确的客户机和服务器;   2)加密数据以防止数据中途被窃取;   3)维护数据的完整性,确保数据在传输过程中不被改变。 一、什么是SSL? SSL或者Secure Socket Layer

欧拉函数的应用-RSA加密算法

余生长醉 提交于 2019-12-10 07:16:24
若p和q互质,令n = p*q 则ola(n) = (p-1)*(q-1) 我们知道p和q的值能轻易知道(p-1)*(q-1)的值也就是ola函数的值,但是仅仅知道n是多少,却非常难得到p和q是多少,因为当n很大时,例如有几百位时,它就有非常多的质因数,要暴力穷举很长时间。所以这就保证了RSA加密算法的可靠性。 RSA加密是非对称加密,密钥 由公钥和私钥组成。 公式为: (明文)^e % n = 密文 其中, e 是一个小于n且与n互质的数。 (密文)^d % n = 明文 d = ( 1 + k*ola(n) ) / e (在此处, k和d都必须是正整数。) 将明文的e次方对n取余后得到密文。 将密文的d次方对n取余后得到明文。 所以 加密用公钥(e, n) 解密用私钥(d, n) 你构造出一个密钥对之后,将公钥发给别人,别人通过公钥加密,在发送给你,你在用公钥解密,就完成了明文加密传输。 所以我们首先要构造两个质数p和q 则 n = p*q ola(n) =(p-1)* (q-1) 然后随机构造一个小于n并且与n互质的数 e。 得到 e n ola(n) 之后 就剩下d了 d = ( 1 + k*ola(n) ) / e 因为d和k一定是正整数 所以我们可以从1开始枚举k,直到求出的d是一个正整数。 或者是将等式变化为 d*e - k*ola(n) = 1 由扩展欧几里得求解d

几种加密算法的测试,包括对称加密和非对称加密

℡╲_俬逩灬. 提交于 2019-12-10 01:49:16
对称加密算法   Blowfish 加密解密 Blowfish 加密算法介绍:BlowFish是对称加密算法的其中一种,加密后的数据是可逆的。由于BlowFish加密/解密速度快,更重要的是任何人都可以免费使用不需要缴纳版权费,所以有不少游戏都采用BlowFish加密资源文件数据。BlowFish 每次只能加密和解密8字节数据,加密和解密的过程基本上由ADD和XOR指令运算组成,所以速度非常快。 Blowfish 加密算法实现 1 /** 2 * Blowfish加密 3 * 4 * @param text 需要加密的数据 5 * @param privateKey 加密密钥 6 * @return 7 */ 8 public static String f_EnBlowfish(String text, String privateKey) 9 { 10 byte[] cifrado1 = null; 11 byte[] cifrado2 = null; 12 byte[] mensaje = text.getBytes(); 13 try 14 { 15 Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); 16 byte[] keys = privateKey

C#开发中常用的加密解密方法

假如想象 提交于 2019-12-09 22:56:37
转载自: https://www.cnblogs.com/bj981/p/11203711.html C#开发中常用的加密解密方法 相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天给大家分享我个人总结的一些加密算法: 常见的加密方式分为可逆和不可逆两种方式 可逆:RSA,AES,DES等 不可逆:常见的MD5,SHAD等 一、MD5消息摘要算法 我想这是大家都常听过的算法,可能也用的比较多。那么什么是MD5算法呢?MD5全称是message-digest algorithm 5,简单的说就是 单向的加密, 也就是说 无法根据密文推导出明文。 MD5主要用途: 1、对一段信息生成信息摘要,该摘要对该信息具有唯一性,可以作为数字签名 2、用于验证文件的有效性(是否有丢失或损坏的数据) 3、对用户密码的加密 4、在哈希函数中计算散列值 从上边的主要用途中我们看到,由于算法的某些不可逆特征,在加密应用上有较好的安全性。通过使用MD5加密算法,我们输入一个任意长度的字节串,都会生成一个128位的整数。所以根据这一点MD5被广泛的用作密码加密。下面我就像大家演示一下怎样进行密码加密。 首先需要引入命名空间,先看一个比较简单的MD5加密的例子: using System.Security; using System.Security.Cryptography; public

JAVA中常用的加密算法总结

主宰稳场 提交于 2019-12-07 22:00:57
项目中第一次深入地了解到加密算法的使用,现第一阶段结束,将使用到的加密算法和大家分享一下: 首先还是先给大家普及一下常用加密算法的基础知识 基本的单向加密算法 BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) 复杂的加密算法 RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman) DES/3DES(Digital Signature Algorithm,数字签名) 国密算法 SM2/SM4(是由国家密码管理局编制的一种商用密码分组标准对称算法) 使用方法: base64 public static byte [] encode2Base64 ( byte [] bytes) { byte [] bts = Base64.encodeBase64(bytes); return bts; } public static byte [] decode2Base64 (String str) { byte [] bts = Base64.decodeBase64(str); return bts; } MD5 public static String md5 (String str)