精华内容
下载资源
问答
  • import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;public class Arithmetic {static Key key;/*** 根据参数生成KEY** @param strKey...

    package cn;

    import java.security.Key;

    import java.security.SecureRandom;

    import javax.crypto.Cipher;

    import javax.crypto.KeyGenerator;

    public class Arithmetic {

    static Key key;

    /**

    * 根据参数生成KEY

    *

    * @param strKey

    */

    public static void getKey(String strKey) {

    try {

    KeyGenerator _generator = KeyGenerator.getInstance("DES");

    _generator.init(new SecureRandom(strKey.getBytes()));

    key = _generator.generateKey();

    _generator = null;

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    /**

    * 加密String明文输入,String密文输出

    *

    * @param strMing

    * @return

    */

    public static String getEncString(String strMing) {

    byte[] byteMi = null;

    byte[] byteMing = null;

    String strMi = "";

    try {

    return byte2hex(getEncCode(strMing.getBytes()));

    // byteMing = strMing.getBytes("UTF8");

    // byteMi = this.getEncCode(byteMing);

    // strMi = new String( byteMi,"UTF8");

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    byteMing = null;

    byteMi = null;

    }

    return strMi;

    }

    /**

    * 解密 以String密文输入,String明文输出

    *

    * @param strMi

    * @return

    */

    public static String getDesString(String strMi) {

    byte[] byteMing = null;

    byte[] byteMi = null;

    String strMing = "";

    try {

    return new String(getDesCode(hex2byte(strMi.getBytes())));

    // byteMing = this.getDesCode(byteMi);

    // strMing = new String(byteMing,"UTF8");

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    byteMing = null;

    byteMi = null;

    }

    return strMing;

    }

    /**

    * 加密以byte[]明文输入,byte[]密文输出

    *

    * @param byteS

    * @return

    */

    private static byte[] getEncCode(byte[] byteS) {

    byte[] byteFina = null;

    Cipher cipher;

    try {

    cipher = Cipher.getInstance("DES");

    cipher.init(Cipher.ENCRYPT_MODE, key);

    byteFina = cipher.doFinal(byteS);

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    cipher = null;

    }

    return byteFina;

    }

    /**

    * 解密以byte[]密文输入,以byte[]明文输出

    *

    * @param byteD

    * @return

    */

    private static byte[] getDesCode(byte[] byteD) {

    Cipher cipher;

    byte[] byteFina = null;

    try {

    cipher = Cipher.getInstance("DES");

    cipher.init(Cipher.DECRYPT_MODE, key);

    byteFina = cipher.doFinal(byteD);

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    cipher = null;

    }

    return byteFina;

    }

    /**

    * 二行制转字符串

    *

    * @param b

    * @return

    */

    public static String byte2hex(byte[] b) { // 一个字节的数,

    // 转成16进制字符串

    String hs = "";

    String stmp = "";

    for (int n = 0; n < b.length; n++) {

    // 整数转成十六进制表示

    stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));

    if (stmp.length() == 1)

    hs = hs + "0" + stmp;

    else

    hs = hs + stmp;

    }

    return hs.toUpperCase(); // 转成大写

    }

    public static byte[] hex2byte(byte[] b) {

    if ((b.length % 2) != 0)

    throw new IllegalArgumentException("长度不是偶数");

    byte[] b2 = new byte[b.length / 2];

    for (int n = 0; n < b.length; n += 2) {

    String item = new String(b, n, 2);

    // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节

    b2[n / 2] = (byte) Integer.parseInt(item, 16);

    }

    return b2;

    }

    public static void main(String[] args) {

    Arithmetic des = new Arithmetic();// 实例化一个对像

    des.getKey("aadd");// 生成密匙

    String strEnc = des.getEncString("樊振华");// 加密字符串,返回String的密文

    System.out.println(strEnc);

    String strDes = des.getDesString(strEnc);// 把String 类型的密文解密

    System.out.println(strDes);

    }

    }

    展开全文
  • 基本思路是:前端对参数进行加密,并经过urlrewriter进行地址改写传入后台,后台再进行解密。如:对这样一个url--‍‍‍‍http://1.1.1.1:8080/a.do?param=1,加密后变为:...

    基本思路是:前端对参数进行加密,并经过urlrewriter进行地址改写传入后台,后台再进行解密。如:对这样一个url--‍‍‍‍http://1.1.1.1:8080/a.do?param=1,加密后变为:http://1.1.1.1:8080/a.do?param='k230101io934jksd32r4',再经过urlrewriter转换可能变为http://1.1.1.1:8080/a/b/k230101io934jksd32r4‍‍‍‍

    前端加密算法:

    /*

    *功能:对url加密算法(只针对window.location.href跳转,不针对post表单提交及ajax方式)

    *算法:对于暴露在浏览器地址栏中的属性值进行加密,如一个属性为agentID=1,

    *     若对1加密后为k230101io934jksd32r4,说明如下:

    *     前三位为随机数;

    *     第四到第五位为要加密字符转换成16进制的位数,

    *       如:要加密字符为15转换成16进制为f,位数为1,则第四、五位为01;

    *     第六位标识要加密字符为何种字符,0:纯数字,1:字符

    *       若是字符和数字的混合,则不加密;

    *     从第七位开始为16进制转换后的字符(字母和非数字先转换成asc码);

    *     若加密后的字符总位数不足20位,则用随机数补齐到20位,若超出20位,则不加随机数。

    *     即加密后总位数至少为20位。

    */

    function encode16(str){

    str=str.toLowerCase();

    if (str.match(/^[-+]?\d*$/) == null){//非整数字符,对每一个字符都转换成16进制,然后拼接

    var s=str.split("");

    var temp="";

    for(var i=0;i

    s[i]=s[i].charCodeAt();//先转换成Unicode编码

    s[i]=s[i].toString(16);

    temp=temp+s[i];

    }

    return temp+"{"+1;//1代表字符

    }else{//数字直接转换成16进制

    str=parseInt(str).toString(16);

    }

    return str+"{"+0;//0代表纯数字

    }

    function produceRandom(n){

    var num="";

    for(var i=0;i

    {

    num+=Math.floor(Math.random()*10);

    }

    return num;

    }

    //主加密函数

    function encrypt(str){

    var encryptStr="";//最终返回的加密后的字符串

    encryptStr+=produceRandom(3);//产生3位随机数

    var temp=encode16(str).split("{");//对要加密的字符转换成16进制

    var numLength=temp[0].length;//转换后的字符长度

    numLength=numLength.toString(16);//字符长度换算成16进制

    if(numLength.length==1){//如果是1,补一个0

    numLength="0"+numLength;

    }else if(numLength.length>2){//转换后的16进制字符长度如果大于2位数,则返回,不支持

    return "";

    }

    encryptStr+=numLength;

    if(temp[1]=="0"){

    encryptStr+=0;

    }else if(temp[1]=="1"){

    encryptStr+=1;

    }

    encryptStr+=temp[0];

    if(encryptStr.length<20){//如果小于20位,补上随机数

    var ran=produceRandom(20-encryptStr.length);

    encryptStr+=ran;

    }

    return encryptStr;

    }

    后台解密算法:

    *解密为加密的逆过程

    */

    public static String decodeValue(String value){

    if(value.equals("")){

    throw new NullPointerException();

    }

    if(value.length()<20){

    throw new NullPointerException();

    }

    String charLength=value.substring(3, 5);//加密后的字符有多少位

    int charLen=Integer.parseInt(charLength,16);//转换成10进制

    int type=Integer.parseInt(value.substring(5, 6));//加密字符的类型(0:数字,1:字符串)

    String valueEnc=value.substring(6, 6+charLen);//16进制字符串

    if(type==0){

    int trueValue=Integer.parseInt(valueEnc,16);

    return String.valueOf(trueValue);

    }else{

    StringBuffer sb=new StringBuffer();

    String[] valueEncArray=valueEnc.split("");

    for(int i=1;i

    int value10=Integer.parseInt(valueEncArray[i]+valueEncArray[i+1],16);//转换成10进制的asc码

    sb.append(String.valueOf((char)value10));//asc码转换成字符

    }

    return sb.toString();

    }

    }

    展开全文
  • 2.当这个加密的值运用在url参数加密中,如果url是另一个项目的话,会出现解密后值为空的现象 3.此时需要在加密后 再次用url加密 具体如下 加密 let query = { id:this.morningId, type:1, ids:ids....

    1.当字符串过长时,需要用 encryptlong 来加密,否则会报参数过长的问题
    2.当这个加密的值运用在url的参数加密中,如果url是另一个项目的话,会出现解密后值为空的现象
    3.此时需要在加密后 再次用url加密
    具体如下
    加密

    let query = {
    				id:this.id,
    				type:1,
    				ids:ids.join(',')
    			}
    			this.h5Url2 = `${process.env.VUE_APP_H5_BASE_HTTP}/shareId=${encodeURIComponent(this.$encryptLong(JSON.stringify(query)))}`;
    

    解密

    this.$decryptLong(decodeURIComponent(this.$route.query.shareId)
    
    展开全文
  • 手册里的加密解密算法, 测试可以支持中文。function encrypt($str, $key){# Add PKCS7 padding.$block = mcrypt_get_block_size('des', 'ecb');if (($pad = $block - (strlen($str) % $block)) < $block) {$str ...

    手册里的加密解密算法, 测试可以支持中文。

    function encrypt($str, $key)

    {

    # Add PKCS7 padding.

    $block = mcrypt_get_block_size('des', 'ecb');

    if (($pad = $block - (strlen($str) % $block)) < $block) {

    $str .= str_repeat(chr($pad), $pad);

    }

    return mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);

    }

    function decrypt($str, $key)

    {

    $str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);

    # Strip padding out.

    $block = mcrypt_get_block_size('des', 'ecb');

    $pad = ord($str[($len = strlen($str)) - 1]);

    if ($pad && $pad < $block && preg_match(

    '/' . chr($pad) . '{' . $pad . '}$/', $str

    )

    ) {

    return substr($str, 0, strlen($str) - $pad);

    }

    return $str;

    }

    展开全文
  • } /** * 系统解密方法 * @param string $data 要解密的字符串 (必须是think_encrypt方法加密的字符串) * @param string $key 加密密钥 * return string * */ function think_decrypt($data, $key = ''){ $key = ...
  • 1、我从这个页面 ,通过以下URL跳转到另一个页面,把参数加密,下面对参数 aid=970 进行加密var aid=970;window.location.href="/apply/add_shopCart?"+window.btoa(window.encodeURIComponent("aid="+aid))//加密不...
  • 因为我要做的就是对这些参数解密 于是我脑海中出现一种思路 参数应该在链接附近 于是打开jeb搜索encrypt=1果然搜索到了 右键q看源码发现代码是经过混淆过的 不过没关系 这里我看到v0=a.f+this.d+"?encrypt=1";这样的...
  • decodeURIComponent base64只是比原字串增加了1/4长度 还觉得长的话,应该从缩短原字串的方向考虑,而不是转换算法 因为即使能保持原字串长度,也难保证都是url适用字符 base64只是比原字串增加了1/4长度 还觉得长的...
  • quote:对字符串进行UrlEncode操作 from urllib.parse import quote s='长春' s=urllib.parse.quote(s) print(s) 输出结果: ...base_url = 'https://www.baidu.com?' data = { 'name': '张三' } pr...
  • url 请求参数加密

    2021-02-28 16:25:57
    } /** * 解密函数 * * @param src 加密过的二进制字符数组 * @param strKey 密钥 * @return * @throws Exception */ public static String deCryptAndDecode(byte[] src, String strKey) throws Exception { ...
  • 还有WebRequestInterceptor是针对请求的,接口方法参数中没有response。 AbstractHandlerMapping内部的interceptors是个Object类型集合。处理的时候判断为MappedInterceptor[加入到mappedInterceptors集合中];...
  • Function URLDecode(enStr)'URL解碼函數dim deStrdim c,i,vdeStr=""for i=1 to len(enStr)c=Mid(enStr,i,1)if c="%" thenv=eval("&h"+Mid(enStr,i+1,2))if v<128 thendeStr=deStr&chr(v)...
  • 背景 对服务接口的安全性具有一定要求,需要做签名验证;...根据具体的请求方法类型和业务参数加密需求进行参数解密、重组等 将新的参数请求体存入包装器内产生新的InputStream 将包装器和响应对象传入FilterChain进
  • 因为上头想达到url加密并且隐藏url里面的参数,加密方式选择了自己写移位的一个...比如我现在手头url参数是wrg_fhy=wjhtwi&rg_uq=fsiwtni&rg_sy=yfuotd_stsnshjsy&rg_hfruni=lejkzs_qxo_8&rg_yduj=g...
  • java url参数编码

    2021-02-12 20:39:53
    import java.io.ByteArrayOutputStream;...public class UrlUtils {/*** URL 加密 这是把中文转码* 编码格式:utf-8*/public final static String urlEncode(String s) {try {return notEmpty(s) ? ja...
  • 解决方案:通过请求参数加密解密可以解决问题1带来的影响,但是仍然不能解决问题2带来的影响2.重定向传递参数和取参1. 传参: 以字符串的形式构建目标url, 可以使用 query variable的格式拼url. 取参: @RequestParam...
  • 前提前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景。为了模拟真实的交互场景,先定制一下整个交互流程。第三方传输(包括请求和响应)数据报文包括三个部分:1、timestamp...
  • 加密解密本身并不是难事,问题是在何时去处理?定义一个过滤器,将请求和响应分别拦截下来进行处理也是一个办法,这种方式... 分享参数/响应加解密的思路。 分享 ResponseBodyAdvice 和 RequestBodyAdvice 的用
  • 如何优雅的实现 Spring Boot 接口参数加密解密

    千次阅读 多人点赞 2021-03-09 14:10:49
    因为有小伙伴刚好问到这个问题,松哥就抽空撸一篇文章和大家聊聊这个话题。 加密解密本身并不是难事,问题是在何时去处理?定义一个过滤器,将请求和响应分别拦截...分享参数/响应加解密的思路。 分享 ResponseBodyA
  • 前提前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景。为了模拟真实的交互场景,先定制一下整个交互流程。第三方传输(包括请求和响应)数据报文包括三个部分:1、timestamp...
  • 首先我们我们接收请求参数的方式有两种,一种是直接拼接在url之后,另一种是@RequestBody的方式包在body中。我们需要重写一个ParameterRequestWrapper 继承HttpServletRequestWrapper import cn.hutool.js
  • /** * 解密 * @param str * @return */ public static byte[] decode(String str) { byte[] data = str.getBytes(); int len = data.length; ByteArrayOutputStream buf = new ByteArrayOutputStream(len); int i =...
  • /** * Window.atob 加解密 * @author ZYGisComputer*/public class BtoaEncode { public staticvoidmain(String[] args) { String admin= BtoaEncode.encryption("admin"); System.out.println(admin); System.out....
  • 问题为什么我一定要在url get参数里传递大量参数,而不使用post提交呢?由于实际项目实现了前后端分离,前端是vue框架开发,而且也并没有做成单页应用,所以会出现两个页面需要大量传递参数的情况。思考传统的get...
  • 对于网页开发者来说,有时候要对URL进行编码显示在浏览器的地址栏,增加链接的安全性,下面是源代码,引用URLDecode即可。。'作 用:URL解码'================================================Function URLDecode...
  • url参数防篡改 sign 防重放 来源(身份)是否合法 签名设计方案 设计 客户端规则 给不同客户端 如(app)分配对应的 商户 key, secret 用来确认请求来自 哪一端 key :xxxAndroid.3.14 secret : dfsdfsfxxxxx (用来加密...
  • (Linux请用export APP_ENCRYPTION_PASSWORD=secret) 然后配置spring,使该properties在工程被app 容器load时,自动解密,这样我们在我们的方法中直接取到该KEY时就已经是明文了(解密过程是jasypt+spring自动完成的...
  • 大家在使用PHP进行GET或POST提交数据时,经常会在URL带着参数进行传递,比如www.mdaima.com/get.php?id=1&page=5,这里就将id编号和page页码进行了参数传递,如果这样直接明文传输,会将参数直接暴露给用户,...
  • 移动端微信项目中常常需要获取某一页面URL中的参数,以便能进行一系列的操作和设置。综合最近项目中的实际场景和需要,在此总结一下如何获取URL中拼接的参数以及中文乱码问题的解决。当我们在页面之间利用get方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,281
精华内容 16,912
关键字:

url参数解密