zoukankan      html  css  js  c++  java
  • Elixir木蚂蚁支付服务器验签名方法

    官方范例为java

    public boolean verify(String sign , String appKey , String orderId) throws UnsupportedEncodingException{
    		if(sign.length()<14){
    			return false;
    		}
    		String verityStr = sign.substring(0,8);   
    		sign = sign.substring(8);		
    		String temp = MD5Util.toMD5(sign);			
    		if(!verityStr.equals(temp.substring(0,8))){
    			return false;
    		}
    		String keyB =  sign.substring(0,6);
    			
    		String randKey = keyB+appKey;
    			
    		randKey = MD5Util.toMD5(randKey);
    			
    		byte[] signB = Base64.decodeFast(sign.substring(6));
    		int signLength = signB.length;
    		String verfic="";
    		for(int i =0 ; i< signLength ; i++){
    			char b = (char)(signB[i]^randKey.getBytes()[i%32]);
    			verfic +=String.valueOf(b);
    		}
    		return verfic.equals(orderId);	
    	}
    

     Elixir

    def verifyPayment(appkey, %{"tradeSign" => tradeSign} = params) do 
        sign_length = String.length(tradeSign)
        if sign_length < 14 do
          false
        else
          verityStr = String.slice(tradeSign, 0, 8)
          sign = String.slice(tradeSign, 8, sign_length + 1)
          temp = Utils.md5_sign(sign)
          temp = String.slice(temp, 0, 8)
          if verityStr == temp do
            keyB = String.slice(sign, 0, 6)
            randKey = keyB <> appkey
            randKey = Utils.md5_sign(randKey)
            signB =  String.slice(sign, 6, sign_length + 1) |> Base.decode64! |> String.to_char_list
            randKey = randKey |> String.to_char_list
            signedOrderId =  signB |> Enum.with_index |> Enum.map fn({c, i}) -> Bitwise.bxor c,  Enum.at(randKey, rem(i, 32)) end
            params["orderID"] == signedOrderId
          else
            false
          end
        end
      end
    
  • 相关阅读:
    docker学习数据卷挂载方式
    接口自动化CIJenkins
    linux安装docker
    docker学习容器备份
    Python实现简易的ORM模型
    Python队列
    selenium实现绕过登录
    docker学习镜像常用操作命令
    docker学习容器常用命令
    把握趋势,成为赢家
  • 原文地址:https://www.cnblogs.com/jasonduan/p/4671106.html
Copyright © 2011-2022 走看看