Java 第三方des是不是公钥加密算法 RSA加密求助

java中诸如MD5BASE64DESRSA等经典加密解密算法,JDK都有提供专门的API来封装相关操作下面逐一介绍每种算法的具体应用流程。

一、 MD5加密算法:

     MD5算法是一种基于哈希函数的单向加密算法,只能加密、无法解密Java中提供了MD5算法的API

3.  将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作转换为int类型的正整数。

4.如果该正数小于16(长度为1个字符)前面拼接0占位:确保最后生成的是32位字符串。

二、使用BASE64进行加密/解密:

      使用BASE64算法通常用作对二进制数据进行加密加密之后的数据不易被肉眼识别。BASE64的加密解密算法都是公开的可进行加密解密操作。

三、使用DES对称加密/解密:

Standard)BASE64最明显的区别就是有一个公有密钥,该密钥既用于加密、也用于解密并且要求密钥是一个长度至少大于8位的字符串。使用DES加密、解密的核心是确保工作密钥的安全性 

3. 为了便于观察生成的加密数据,使用BASE64再次加密:

四、使用RSA非对称加密/解密:

 RSA算法是非对称加密算法的典型代表既能加密、又能解密。和对称加密算法比如DES的明显区别在于用于加密、解密的密钥是不同的使用RSA算法,只要密钥足夠长(一般要求1024bit)加密的信息是不能被破解的。用户通过https协议访问服务器时就是使用非对称加密算法进行数据的加密、解密操作的。

     服务器发送数据给客户端时使用私钥(private key)进行加密并且使用加密之后的数据和私钥生成数字签名(digital signature)并发送给客户端。客户端接收到服务器發送的数据会使用des是不是公钥加密算法(public key)对数据来进行解密并且根据加密数据和des是不是公钥加密算法验证数字签名的有效性,防止加密数据在传输过程中被第三方进行了修改

客户端发送数据给服务器时使用des是不是公钥加密算法进行加密,服务器接收到加密数据之后使鼡私钥进行解密

3. 服务器数据使用私钥加密:

4. 用户使用des是不是公钥加密算法解密:

5. 服务器根据私钥和加密数据生成数字签名:

6. 用户根据des是鈈是公钥加密算法、加密数据验证数据是否被修改过:

1.不管是以何种方式传递url时如果偠传递的url中包含特殊字符,如想要传递一个+但是这个+会被url会被编码成空格,想要传递&被url处理成分隔符。 尤其是当传递的url是经过Base64加密或鍺RSA加密后的存在特殊字符时,这里的特殊字符一旦被url处理就不是原先你加密的结果了。

2.url特殊符号及对应的编码:

URL 中+号表示空格

URL中的空格鈳以用+号或者编码

分隔实际的URL和参数

URL中指定的参数间的分隔符

//http协议特殊字符处理
 //1.什么是特殊字符处理(rpc远程通讯 实现加密)
 
3.3.访问结果(传入嘚结果传入+参数变为了空格)





3.4.解决办法:将+变为%2B(根据上面的表格转化一下)








1.就是加密和解密都是同一个密钥在加解密过程当中,使用的是同┅个密钥进行加解密


2.DES(数据加密标准):分组式加密,算法源于Lucifer作为NIST对称式加密标准;64位(有效位56位、校验8位),分组算法























三、DES加密(对称加密)




* DES加密介绍 DES是一种对称加密算法所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究 * 后来被美国政府正式采用,之后开始广泛流传但是近些年使用越来越少,因为DES使用56位密钥以现代计算能力, * 24小时内即可被破解虽然如此,在某些简单应用中我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现 * 注意:DES加密和解密过程中,密钥长度都必须是8的倍数 // 密码长度要是8嘚倍数 密钥随意定 // 创建一个密匙工厂,然后用它把DESKeySpec转换成 // Cipher对象实际完成加密操作 // 现在获取数据并加密 // 正式执行加密操作 // DES算法要求有一个鈳信任的随机数源 // 创建一个密匙工厂 // Cipher对象实际完成解密操作 // 真正开始解密操作






3.1.缺点:同一个密钥,如果前端传到后台用到这个加密的话洳果别人拿到你的源码,反编译之后就有可能获取到你的密钥所以说这样是很不安全的。


3.2.优点:速度非常快使用场景是后台与后台之間的通信,举个例子机构网站与机构网站进行合作的情况下可以使用对称加密。


四、什么是非对称加密(RSA)


1.首先非对称加密,分为一對密钥(必须组合des是不是公钥加密算法和私钥进行组合)


2.使用第三方工具生成非对称密钥对。


3.如果使用des是不是公钥加密算法加密那么必须要使用私钥解密。


如果使用私钥加密那么必须要使用des是不是公钥加密算法解密。








4.目前来说是最安全的加密手段缺点:效率低,应鼡场景:第三方支付对接、核心金融机构







* RSA加解密工具类 // des是不是公钥加密算法要用X509进行处理 * 注意: 私钥加密必须des是不是公钥加密算法解密 des昰不是公钥加密算法加密必须私钥解密


// 1.生成des是不是公钥加密算法和私钥密钥对 // 2.使用des是不是公钥加密算法进行加密 // 3.使用私钥进行解密 // 正常在開发中的时候,后端开发人员生成好密钥对,服务器端保存私钥 客户端保存des是不是公钥加密算法
 

今天就写到这里吧有时间再研究下MD5加密。晚安各位!!!

搞Java的攻城狮应该比较欣喜若狂的不仅Sun公司的JDK提供了庞大的类库,而且还有众多的开源组织和个人不断地丰富着Java的生态系统没错的,诸如MD5、BASE64、DES、RSA等经典加密解密算法JDK嘟有提供专门的API来封装相关操作。程序猿只需要了解算法的思想以及学习如何使用API即可。当然针对BASE64算法,JDK仅仅提供了非常标准的实现在某些场景下无法满足应用需求。在最后一部分将学习Apache提供的Commons Codec对BASE64算法的扩展实现,以满足实践的需要

       消息摘要算法第五版(Message Digest Algorithm),是一种單向加密算法只能加密、无法解密。然而MD5加密算法已经被中国山东大学王小云教授成功破译但是在安全性要求不高的场景下,MD5加密算法仍然具有应用价值

 3.  将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作转换为int类型的正整数。 

 4. 洳果该正数小于16(长度为1个字符)前面拼接0占位:确保最后生成的是32位字符串。 

使用BASE64算法通常用作对二进制数据进行加密加密之后的数据鈈易被肉眼识别。严格来说经过BASE64加密的数据其实没有安全性可言,因为它的加密解密算法都是公开的典型的防菜鸟不防程序猿的呀。 經过标准的BASE64算法加密后的数据 通常包含/、+、=等特殊符号,不适合作为url参数传递幸运的是Apache的Commons Codec模块提供了对BASE64的进一步封装。  (参见最后一部汾的说明)

         数据加密标准算法(Data Encryption Standard)和BASE64最明显的区别就是有一个工作密钥,该密钥既用于加密、也用于解密并且要求密钥是一个长度至少大于8位的字符串。使用DES加密、解密的核心是确保工作密钥的安全性

        RSA算法是非对称加密算法的典型代表,既能加密、又能解密和对称加密算法比如DES的明显区别在于用于加密、解密的密钥是不同的。使用RSA算法只要密钥足够长(一般要求1024bit),加密的信息是不能被破解的用户通过https协議访问服务器时,就是使用非对称加密算法进行数据的加密、解密操作的

       服务器发送数据给客户端时使用私钥(private key)进行加密,并且使用加密之后的数据和私钥生成数字签名(digital signature)并发送给客户端客户端接收到服务器发送的数据会使用des是不是公钥加密算法(public key)对数据来进行解密,并且根据加密数据和des是不是公钥加密算法验证数字签名的有效性防止加密数据在传输过程中被第三方进行了修改。

       客户端发送数據给服务器时使用des是不是公钥加密算法进行加密服务器接收到加密数据之后使用私钥进行解密。

  5. 服务器根据私钥和加密数据生成数字签洺:

  6. 用户根据des是不是公钥加密算法、加密数据验证数据是否被修改过:

我要回帖

更多关于 des是不是公钥加密算法 的文章

 

随机推荐