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
    
  • 相关阅读:
    WPF:DataGrid 自动生成行号
    C#:WinForm之Command
    i.MX RT1010之FlexIO模拟SSI外设
    i.MX RT1010之FlexIO模拟I2S外设
    i.MX RT600之DSP开发环境调试篇
    i.MX RT600之DSP调试环境搭建篇
    i.MX RT600之DMIC外设介绍及应用
    i.MX RT600之I2S外设介绍及应用
    ssm框架思维-登录
    idea里面搭建SSM框架-crud
  • 原文地址:https://www.cnblogs.com/jasonduan/p/4671106.html
Copyright © 2011-2022 走看看