`

Soap api调用加密算法

    博客分类:
  • RUBY
阅读更多
在lib中定义加密算法Encription类(接口密文有效时间内生效)。
require 'md5'
require 'base64'
class Encription
  class << self
		def microtime()
		  epoch_mirco = Time.now.to_f;
		  epoch_full = Time.now.to_i;
		  epoch_fraction = epoch_mirco - epoch_full;
		  return epoch_fraction.to_s + ' ' + epoch_full.to_s;
		end
		def uc_authcode(string,operation='DECODE',key='',expiry=0)
		  ckey_length=4;
		
		  key='lzqlzqlzqlzqlzq' if !key||key=='';
		  key=MD5.hexdigest(key);
		  keya=MD5.hexdigest(key[0,16]);
		  keyb=MD5.hexdigest(key[16,16]);
		  keyc='';
		  if ckey_length>0
		    if operation == 'DECODE'
		      keyc=string[0,ckey_length];
		    else
		      keyc=MD5.hexdigest(microtime())[-ckey_length,ckey_length];
		    end
		  end
		
		  cryptkey=keya+MD5.hexdigest(keya+keyc);
		  key_length=cryptkey.length;
		
		  if operation == 'DECODE' 
		    string=Base64.decode64(string[ckey_length,string.length-ckey_length]);
		  else
		    t= expiry==0?'0'*10:(Time.now.to_i+expiry).to_s;
		    string=t+MD5.hexdigest(string+keyb)[0,16]+string;
		  end
		  string_length=string.length;
		
		  result='';
		  box=(0..255).to_a;
		
		  rndkey=[];
		  0.upto(255) do |i|
		    rndkey[i]=cryptkey[i%key_length];
		  end
		
		  j=0;
		  0.upto(255) do|i|
		    j=(j+box[i]+rndkey[i])%256;
		    tmp=box[i];
		    box[i]=box[j];
		    box[j]=tmp;
		  end
		
		  a=0;
		  j=0;
		  0.upto(string_length-1) do|i|
		    a=(a+1)%256;
		    j=(j+box[a])%256;
		    tmp=box[a];
		    box[a]=box[j];
		    box[j]=tmp;
		    result<<(string[i]^box[(box[a]+box[j])%256])
		  end
		
		  if operation == 'DECODE'
		    if((result[0, 10].to_i == 0 || result[0, 10].to_i - Time.now.to_i > 0) && result[10, 16] == MD5.hexdigest(result[26,result.length-26]+keyb)[0, 16])
		      return result[26,result.length-26];
		    else
		      return '';
		    end
		  else
		    #return keyc+Base64.encode64(result).sub('=', '').chomp();
		    return keyc+Base64.encode64(result);
		  end
		end
  end   #class << self
end   #class Simulation



api定义:
class TransforInfApi < ActionWebService::API::Base
  api_method :transfor_inf,
  :expects=>[{:user_name=>:string},{:password=>:string},{:nickname=>:string},{:regip=>:string}],
  :returns=>[:int]
end



实例化接口:
class TransforInfController < ApplicationController
  wsdl_service_name 'TransforInf'
  web_service_scaffold :invoke
  web_service_api TransforInfApi
  web_service_dispatching_mode :direct
  def transfor_inf(username,password,nickname,regip)
        user_transfor = Encription.uc_authcode(username,'DECODE','',340)
        password_transfor = Encription.uc_authcode(password,'DECODE','',340)
        nick_name_transfor = Encription.uc_authcode(nickname,'DECODE','',340)
        regip_transfor = Encription.uc_authcode(regip,'DECODE','',340)
        return -7 if (user_transfor=='' || password_transfor=='' || nick_name_transfor=='' || regip_transfor=='')
        user = User.find_by_login(user_transfor)
        if !user
            @user = User.new
            @user.login = user_transfor
            @user.password = password_transfor
            @user.nickname = nick_name_transfor
            @user.regip = regip_transfor
            @user.save
            return @user.id
        elsif user
            return -3
        else   
        end
  end
end



api的调用:
 for user in @users
      username = ActionWebService::Client::Soap.new(TransforInfApi,"http://127.0.0.1:5000/transfor_inf/api")
      user_name=user.login
      @user=User.find_by_login(user_name)
      password=@user.password
      nickname=@user.nickname
      regip="192.168.0.1"
      username.transfor_inf(user_name,password,nickname,regip)
 end


分享到:
评论

相关推荐

    vc6.0调用webservice

    例如,某些Web服务可能使用加密算法或数据类型不被VC6.0支持。在这种情况下,可能需要升级编译器或寻找替代方法。 7. **性能优化**:虽然通过SOAP调用Web服务提供了跨平台兼容性,但其性能可能不如现代的RESTful ...

    JAVA_API1.6文档(中文)

    javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 ...

    java api最新7.0

    javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 JAX...

    Java调用C#安全认证的Web服务

    此外,安全设置的匹配也至关重要,比如加密算法和证书的使用。 7. **调试与测试**: 调试跨平台的Web服务调用可能需要特殊的工具,如SOAP UI,它可以模拟客户端请求,帮助开发者检查和调试消息交换。同时,确保在...

    Java 1.6 API 中文 New

    javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 JAX...

    CXF(WS_Security)证书加密

    3. **配置CXF**:在CXF的配置文件(如cxf.xml或Spring配置文件)中,需要设置安全策略,包括启用WS-Security,指定使用的加密算法、证书路径等。 4. **服务端配置**:在服务端,我们需要配置服务端的证书,以及如何...

    JAVASE6.0_Api_en\docs\api

    Java 6的安全模型也得到了强化,包括新的Policy API和更强的加密算法支持,增强了应用程序的安全性。 七、Web服务 Java SE 6.0支持SOAP和RESTful Web服务,JAX-WS和JAX-RS为开发Web服务提供了强大的工具。 八、...

    JavaAPI1.6中文chm文档 part1

    javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 ...

    java+xfire(web service) + php 客户端 并实现文件加密

    常见的加密算法有AES(高级加密标准)、DES(数据加密标准)等。 6. **SOAP(简单对象访问协议)**:SOAP是一种基于XML的消息传递协议,用于在Web服务中交换结构化和类型化的信息。在这个项目中,Java和PHP之间通过...

    java的webService源码(使用cxf)

    6. **依赖 JAR 包**:压缩包中的 JAR 文件包含了 CXF 框架和其他必要的库,如 XML 处理、加密算法支持等。确保这些库被正确引入到项目中,是成功运行 WebService 的关键。 7. **测试与调试**:使用 CXF 提供的测试...

    基于SOAP扩展的Web服务安全机制研究 (2009年)

    2. **加密技术**:使用对称加密或非对称加密算法对SOAP消息进行加密处理,以保护消息内容不被未授权方窃取。常见的加密算法包括AES、RSA等。 #### 安全机制设计与实现 在实际应用中,为了进一步提高安全性,通常会...

    webservice客户端与服务器端的实现demo

    - **安全配置**:根据需求,配置XFireWSS以启用安全特性,如添加证书、设置加密算法等。 - **调用服务**:实例化客户端生成的类,并通过其方法调用服务器端的服务。 6. 示例代码: - 服务器端通常会创建一个服务...

    [Java参考文档].JDK_API 1.6

    javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 JAX...

    SSL数据加密的好资料

    1. 握手协议:客户端和服务器端通过SSL握手协议建立连接,确定加密算法、交换会话密钥等。 2. 身份验证:服务器通常会向客户端发送其数字证书,证明其身份。证书由受信任的第三方证书颁发机构(CA)签名,包含服务器...

    JDK_1_6 API

    javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 ...

    cxfSecurity.rar cxf加密 加拦截器

    4. **加密**:数据保护手段,确保信息在传输过程中不被非法获取,通常通过SSL/TLS或者特定的加密算法实现。 5. **证书**:可能指的是数字证书,用于验证服务器的身份,是SSL/TLS连接的重要组成部分。 在【压缩包子...

    JavaAPI中文chm文档 part2

    javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 ...

Global site tag (gtag.js) - Google Analytics