JAVA如何对URL进行加密和解密啊

JAVA如何对URL进行加密和解密啊,第1张

URLDecoder和URLEncoder应该是不行的,程序员轻易的就能解码修改参数后重新编码。比较合适的就是RSA加密了,只要两个服务器共用一个密钥,一个加密,另一个收到后再用密钥解密就行。因为是整数加密,所以在没有证书的情况下基本无法解密的。 des加密也是不错的选择,比RSA简单。如果有能力也可以自己写一个简单的加密方法。

加密URL参数

插件在访问 Web 程序时,可以使用 Get 方法或 Post 方法提交数据,无论是哪种方法,按照 HTTP 协议的规范,参数总是按照以下格式提交(每对参数名/参数值以“&”号分隔):

参数名1=参数值1&参数名2=参数值2&参数名3=参数值3...

如果您没有使用SSL,所有的参数名和参数值都将以明文的形式通过网络传输到 Web 服务器,显然这种方式是很不安全的,为了保证插件与Web 程序的通讯安全,插件在提交参数前可以对每个参数值使用 Rijndael 加密算法进行加密处理,并使用 Base64 编码转换为可读字符串形式。

Rijndael 加密算法是一种高效的对称加密算法,它是 AES(Advanced Encryption Standard,高级加密算法标准)的实现,在加密和解密时有两个基本参数:初始向量和密钥,Web程序在进行解密时必须使用和插件端设置相同的初始向量和密钥。

下面分别列出了加密和不加密的例子各一个:

a. 不加密:Username=test&Password=123456&ClientIP=192.168.0.200&CurrentTime=2005-07-06+23%3a51%3a29

b. 加密:Username=ZtlBwgvwkS5YV98N9cgO%2fw%3d%3d&Password=vBSchK4dJX7Z2zfUatu9ZQ%3d%3d&CurrentTime=mpNifqRIvBV2xZi3d%2fPli6%2bZwR9BKHs4y6t%2bNS2QIr4%3d

在 Web 程序端必须使用相同的算法来解密各个参数值,具体如何实现取决与您所使用的 Web 程序语言,这就需要您找到特定语言的算法实现。解密一个参数值的过程包括下面三个步骤:

1. 使用 Base64 算法将参数值转换为字节数组;

2. 使用 Rijndael 算法将 1 中得到的字节数组解密得到另一字节数组;

3. 将 2 中得到字节数组用特定的字符集转换成字符串,即得到原始的数据。

插件安装目录下的“GVODClassLib.dll”文件包含了加密和解密的算法实现类 CryptoUtility,它的 Decrypt 方法可以直接将 Base64 编码后的密文解密为原文字符串,如果您的 Web 程序使用的是 asp.net 编写的,可以将该文件拷贝到您 Web 站点的“/bin”目录下,然后按照下面的例子完成解密:

<%@ page language="C#" %>

<%@ import namespace="Com.GVOD" %>

<%

//定义密钥,请改成你加密时使用的密钥

string key = "OEtxF/yyALd2NflVW4KSMspQIozPkSRL+mEdvlBAzUQ="

//定义初始向量,请改成你加密时使用的初始向量

string iv = "Cz3EXGTEMeIN8PXKFLiZWg=="

//定义密钥长度,请改成你加密时使用的密钥的长度

int keyLength = 256

//生成 CryptoUtility 类的实例

CryptoUtility util = new CryptoUtility(key, iv, keyLength)

//解密用户名

string username = util.Decrypt(Request["Username"])

//解密密码

string password = util.Decrypt(Request["Password"])

//解密其它参数

...

%>


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/738150.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-13
下一篇2023-08-13

发表评论

登录后才能评论

评论列表(0条)

    保存