第三方调用U9服务说明(Java平台)
第三方调用U9服务(Java平台)一、Java环境搭建a)Jdk版本jdk-5_5_0_10b)apache-cxf-2.2.4c)开发工具Eclipsed)配置环境变量添加新变量ClASSPATH:值为“.;C:\Program Files\Java\jdk1.5.0_10\lib\Tools.jar;C:\Program Files\Java\jdk1.5.0_10\jre\lib\rt.jar”添加新变量Java_HOME :值为“C:\Program Files\Java\jdk1.5.0_10”Path变量后追加:“C:\Program Files\Java\jdk1.5.0_10\bin”说明:C:\Program Files\Java\jdk1.5.0_10是jdk的安装目录e)UFIDA U9服务器二、引用U9服务以创建收货单服务为例,UFIDA.U9.ISV.RCV.ICreateRCVSRV.svca)验证服务是否可用如果能显示显示下面的图片说明服务可用b)生成代理类利用apache-cxf-2.2.4针对wsdl导出java客户端文件D:\apache-cxf-2.2.4\bin> wsdl2java -d d:\JavaService -verbose http://localhost/portal/services/UFIDA.U9.ISV.RCV.ICreateRCVSRV.svc?wsdl 注明:-d <客户端代码输出路径>-verbose<服务地址>查看生成的文件:c)构架项目1.创建Java测试工程2.Copy cxf 生成客户端Java文件到工程目录3.新建类TestMain.java4.添加外部引用库Jar在项目上右键点属性5.修改服务地址Uri三、项目实现细节a)调用服务框架代码类似DotNet平台调用代码,主要是语法不同//开始调用ERP服务,“创建服务”org.tempuri.CreateRCVSRVStub createRcvsvclient = new org.tempuri.CreateRCVSRVStub();org.ufida.UFIDAU9ISVRCVICreateRCVSRV createsv =createRcvsvclient.getBasicHttpBindingUFIDAU9ISVRCVICreateRCVSRV();//给头、明细赋值org.ufida.entitydata.ArrayOfUFIDAU9ISVRCVDTOOBAReceivementDTOData rCVList =createRCVList();//doResult就是返回结果。
Holder<org.ufida.entitydata.ArrayOfUFIDAU9PMRcvReceivementData> doResult = newHolder<org.ufida.entitydata.ArrayOfUFIDAU9PMRcvReceivementData>() ;Holder<exceptions.ubf.ufsoft.ArrayOfMessageBase> outMessages= new Holder<exceptions.ubf.ufsoft.ArrayOfMessageBase>();try{//将入库单内容传入ERP(入和返的值,均作为此方法的参数)。
//context验证信息,rCVList入的值,doResult方法返回值,createsv._do(context, rCVList, doResult, outMessages);System.out.println("Invoke end ...");}c atch(Exception ex){//省略部分代码}b)上下文信息//创建当前上下文(相当于验证信息,这部分需灵活配置)String IDForCompany = "002";//当前企业编号Long IDForOrganization = new Long("1001007128961046");//当前组织IDLong IDForUsers = new Long("1001007176447429");//当前用户IDString UserCode = "demo";//当前用户编码//创建上下文环境Object context = createContext(IDForCompany,IDForOrganization,IDForUsers,UserCode);//创建上下文环境private static Object createContext(String entid,long orgid,long userid,String usercode) {org.datacontract.schemas._2004._07.ufsoft_ubf_util.ObjectFactory contextfactory = neworg.datacontract.schemas._2004._07.ufsoft_ubf_util.ObjectFactory();org.datacontract.schemas._2004._07.ufsoft_ubf_util.ThreadContext tc = contextfactory.createThreadContext();com.microsoft.schemas._2003._10.serialization.arrays.ObjectFactory arrayFactory = newcom.microsoft.schemas._2003._10.serialization.arrays.ObjectFactory();ArrayOfKeyValueOfanyTypeanyType contextarray =arrayFactory.createArrayOfKeyValueOfanyTypeanyType();KeyValueOfanyTypeanyType kv1 = new KeyValueOfanyTypeanyType();kv1.setKey("EnterpriseID");kv1.setValue(entid);//填具体的企业编号contextarray.getKeyValueOfanyTypeanyType().add(kv1);KeyValueOfanyTypeanyType kv2 = new KeyValueOfanyTypeanyType();kv2.setKey("OrgID");kv2.setValue(orgid);//填具体的组织IDcontextarray.getKeyValueOfanyTypeanyType().add(kv2);KeyValueOfanyTypeanyType kv3 = new KeyValueOfanyTypeanyType();kv3.setKey("UserID");kv3.setValue(userid);////填具体的用户IDcontextarray.getKeyValueOfanyTypeanyType().add(kv3);KeyValueOfanyTypeanyType kv4 = new KeyValueOfanyTypeanyType();kv4.setKey("UserCode");kv4.setValue(usercode);//填具体的用户编码contextarray.getKeyValueOfanyTypeanyType().add(kv4);KeyValueOfanyTypeanyType kv5 = new KeyValueOfanyTypeanyType();kv5.setKey("CultureName");kv5.setValue("zh-CN");//当前语种contextarray.getKeyValueOfanyTypeanyType().add(kv5);tc.setNameValueHas(contextarray);return tc ;}c)传入参数private static org.ufida.entitydata.ArrayOfUFIDAU9ISVRCVDTOOBAReceivementDTOData createRCVList(){org.ufida.entitydata.ObjectFactory dataFactory = neworg.ufida.entitydata.ObjectFactory();//创建DTO集合,也就是参数要求的对象。
org.ufida.entitydata.ArrayOfUFIDAU9ISVRCVDTOOBAReceivementDTOData rcvDToArray = dataFactory.createArrayOfUFIDAU9ISVRCVDTOOBAReceivementDTOData();//DTO集合中的每个对象,都需要这样创建出来。
UFIDAU9ISVRCVDTOOBAReceivementDTOData headerData =dataFactory.createUFIDAU9ISVRCVDTOOBAReceivementDTOData();// 表头赋值headerData.setSysState(ObjectState.INSERTED);//“新建”标记符XMLGregorianCalendar timeValue = new XMLGregorianCalendarImpl();timeValue.setYear(2010);timeValue.setMonth(4);timeValue.setDay(2);timeValue.setHour(10);timeValue.setMinute(35);timeValue.setSecond(30);headerData.setMBusinessDate(timeValue); // 日期//单据类型UFIDAU9PMDTOsBESimp4UIDTOData docType =dataFactory.createUFIDAU9PMDTOsBESimp4UIDTOData();docType.setMCode(dataFactory.createUFIDAU9PMDTOsBESimp4UIDTODataMCode("RCV01") );docType.setSysState(ObjectState.INSERTED);headerData.setMRcvDocType( dataFactory.createUFIDAU9ISVRCVDTOOBAReceivementDTO DataMRcvDocType(docType));。
金蝶KBI_产品介绍
P36
调度管理
调度管理功能提供了灵活的调度计 划设置、快照名编码规则设置 支持生成快照、导出Excel及发送 邮件通知等多种输出方式 提供调度日志审计功能
KBI Data Integration
• 支持高并发、海量数 据处理 • 高垂直、水平伸缩性 开放性 • 遵循CWM规范
• 内置数据建模工具 (UDM)
• 数据源(EAS等ERP产 品)元数据和数据访问 接口,支持 KSQL
• 元数据驱动
• 国际化版本 • 开放API
• 功能实用、性价比高
版权所有 ©1993-2011 金蝶国际软件集团有限公司
版权所有 ©1993-2011 金蝶国际软件集团有限公司
P13
管理套表
支持多页签报表
版权所有 ©1993-2011 金蝶国际软件集团有限公司
P14
多数据源
支持多个数据源,支持多种数据源
扩展报 表
外部数据管理中心
数据引擎
EAS数据库
K3数据库
U9数据库
其他数据库
文件
版权所有 ©1993-2011 金蝶国际软件集团有限公司
报销单:ABCDE
内容:B活动 对象:国美 商品:PDP 42PV70
决裁:12345
内容:B活动 对象:国美 商品:PDP 42PV70 预算:50
精算:35
版权所有 ©1993-2011 金蝶国际软件集团有限公司
P23
报表中心-保存快照
保存历史版本,便于信息利用及日后追溯
手工执 行
授权用户 访问
INTERNE T
报表中 心
调度服 务
版权所有 ©1993-2011 金蝶国际软件集团有限公司
用Jpcap和Java实现图形化的Ping程序
1
23453 简介
2565 语言的标准包 7565, .89 提供了 :)+ ; <=+ 传输方面的接口 > 但对网络模型中网络层及数据链路层却 未提供相应的类来进行控制 > 必须使用 2?( 技术 > 使用本地操作系统的 @A)BC: 接口 , 而 23453 扩展包却提 供了这方面需求的支持 , 23453 是一个用来捕获和发送各种类型网络数据包的 2565 库 , 通过 23453> 可以用 2565 语言开发基于网络接口的抓包分析程序 , 23453 可以捕获以太网包 > (+ 包 > DE+ ; EDE+ 包 > :)+ ; <=+ 包 及 ()*+ 包 , 23453 是一个中间件 > 通过调用 F-.3453 ; G-H453 给 2565 提供一个公用接口 > 实现了平台无关性 , 23453 已经在常见操作系统平台# 如 F-.IJKL> G-.MN> *54 A@ 等$ 上经过测试, 3.1 Jpcap 种类 目前有两种同名的 23453> 一种是 LJMO48PJO/8 提供的> 其网址是 Q993R ; ; LJMO48PJO/8, .89 ; 3OJ7849L ; 73453 ; > 一种是 B8-95 SM7-- 提供的 > 其网址是 Q993R ; ; .89O8L85O4Q, -4L, M4-, 8IM ; TPM7-- ; 73453 ; IJ4 ; -.I8N, U9VW > 本文用 的 23453 是后者 , 3.2 Jpcap 主要类和接口 0$ ?89KJOT(.98OP548 类, 代表网络接口> 如以太网卡, 该类直接从 AH7849 类派生 > 有一些描述网络接口的属 性 > 如 *D) 地址 > 链接名及链接描述等 , %$ 23453)539JO 类, 此类用来捕获和读取网络数据包 , 该类一个实例代表建立了一个与指定设备的链接 > 可以通过该类的实例来控制设备 > 例如设定网卡模式、 设定过滤关键字等等 , $ 类 此类专门用于网络数据包的发送 1 23453@8.I8O , , "$ +54T89 类及其子类 , +54T89 类是所有 23453 支持的数据包类的父类 , 包括 DE++54T89> ()*++54T89> (++54T89> :)++54T89 和 <=++54T89, !$ +54T89E848-68O 接口 , 用来定义一个方法去分析已经捕获的数据包 , 方法名是 O848-68+54T89> 该方法在 每捕获一个数据包时都会被调用 , 以上只给出了本程序中用到的主要类> 详细的说明见文献 X Y Z , 3.3 Jpcap 在 Windows 上的安装 23453 在常见操作系统平台上都有安装程序 > 这里只介绍在 F-.IJKL 平台上的安装方法 , 安装共有三个 步 骤 > 首 先 下 载 并 安 装 2=B[> 若 只 想 运 行 基 于 23453 的 应 用 程 序 > 则 可 只 安 装 2EC[\ 其 次 下 载 并 安 装 F-.+453\ 最后下载并安装 23453 本身 , 注意每个下载和安装的软件都是 PJO F-.IJKL 的,
04上线支持-05上线支持阶段确认备忘录
xxx公司PLM系统验上线支持阶段确认忘录甲方:XXX公司乙方:金蝶软件(中国)有限公司PLM系统项目经过双方对实施过程、系统方案、系统功能等联合验证,基本达到实施目标,双方同意对项目进行上线支持阶段确认,但对目前企业认为确认不够充分的地方及个别遗留问题,经甲乙双方友好协商共同签定此备忘录,此备忘录说明了上线支持阶段实施确认后双方合作的基本方式、工作内容、权利和职责。
经双方协商达成以下一致处理意见:1、按照合同规定,甲乙双方有义务为对方的软件、技术资料及数据保密,未经对方许可,不得以任何理由提供给第三方。
2、项目上线支持阶段确认后,金蝶软件(中国)有限公司昆明分公司机场项目组将一如既往的为XXX公司提供技术支持服务,同时金蝶软件(中国)有限公司昆明分公司XXX公司运营服务部专职服务工程师也会加入项目组,为XXX公司提供专业化的服务。
3、项目上线支持阶段确认后,双方协商一致按照之前的工作计划并遵照执行。
4、系统正式上线后业务运行过程中出现的问题,先由XXX公司人力资源系统管理员及开发人员处理。
对于XXX 公司不能自行解决的问题,由项目汇总转交金蝶公司实施顾问,由实施顾问现场处理。
5、项目上线支持阶段确认后1个月内,项目交由金蝶软件(中国)有限公司深圳分公司售后服务部维护。
甲方:乙方:ABC公司金蝶软件(中国)有限公司深圳分公司项目经理(签字盖章):项目经理(签字盖章):日期:年月日日期:年月日附:《备忘问题记录处理清单》PLM上线支持阶段确认备忘事项备忘事项功能说明目前情况说明金蝶承诺解决办法完成时间设计变更控制设计变更申请、执行、审核、发放过程1.由于生产数据仍然以旧ERP为准,BOM变更也是在旧ERP发起,然后再通过变更驱动表单更改PLM系统BOM。
未在PLM系统进行完整设计变更过程控制。
2.变更管理过程及功能在前期模拟及U9接口测试时都已经在PLM系统进行过验证,是可以走通的。
1.顾问配合共进实施人员进一步对变更管理功能及过程进行验证;2.待旧ERP停用后,正式在PLM系统对BOM变更按既定解决方案进行完整控制;3.在正式应用过程中无论是变更管理模块本身的功能问题,还是涉及到与U9接口方面的问题,承诺立即响应配合解决。
效率源软件使用说明
效率源933使用说明书效率源933高速硬盘检测修复一体机' {. V+ u4 O; n# L! {* c3 N( C; H: D1 _使用手册(中文CN1.0版)) p9 i' F$ T2 u) m& ~& k9 t, I" O9 [) {* r7 v/ U" w1 v) M6 L+ _6 |/ a3 x效率源硬盘研究所声明" x+ r i) \) |# {4 |+ L7 D3 E. l3 ~, |1 r! p6 W请在使用933机前首先阅读本声明和《最终用户许可协议》。
(以下称“许可协议”)4 d5 P7 z v- _, Q' g请在购买本机后及时在指定的网站中清楚,以便能够获得注册权益及升级。
! h4 O6 @1 `& J/ Y5 v如果您不能接受本授权声明和许可协议,或者有疑义,请不要打开防静电袋。
2 |8 [! H+ E5 {7 T' K9 q0 x9 }: I933机版权所有者为效率源硬盘研究所(重庆效率源电子科技有限责任公司),以下简称效率源。
" M, p2 ]; }* b4 R; M933机已经申请国家实用新型专利和产品外观专利,效率源已经注册国家商标。
受中华人民共和国法律保护。
7 q+ z7 F8 j6 h8 W未经版权人授权,不允许对933机进行私自维修和拆开机壳。
9 v, d& b) |& o7 C除许可条款和条件明确规定的使用外,用户不得破解及修改本机功能。
% P+ }6 v8 A2 u! g; E在您购买933机之日起的1个月内,如果933机因为质量问题不能正常使用,效率源负责更换。
但因用户错误使用,人为损坏、外观损坏、非法拆装、突发事故导致的933损坏或丢失,效率源将概不负责。
* q, t4 b: S% f不论遵循本协议与否,效率源在任何情况下均不就因使用或不能使用933而发生的损失(包括但不限于营业利润损失、业务中断、硬盘数据丢失、硬盘损坏或其他经济损失)承担赔偿责任,即使已通知本公司有可能发生该损失的亦是如此。
U8与NC比较
用友系列产品的对比报告
用用友公司成立于1988年,是国内最大的管理软件提供商;
用友软件已形成NC、U9/U8、T6/T3/T1和在线应用四条产品线,分别面向大、中、小型企业提供管理软件产品和服务;
用友公司拥有国内最完善的企业管理软件研发体系;
▪49家分公司;
▪60家客户服务中心;
▪150家培训教育中心;
▪1500人的研发队伍;
▪3000名服务专家。
T3—用友通标准版支持小型企业快速成长,应对日益激烈的市场竞争,是以客户为核心,集产、供、销、财一体解决方案,从客户实际需求出发,主要是面向小型企业开发设计, T3财务系统只适合于单企业核算类型的客户,不支持集团财务需求。
用友U8和NC两款产品都是面向中大型企业设计的。
可以实现集团财务的应用.这两款产品面对的客户又有区别,两款产品的具体对比如下表所示。
用友集团财务管理系统-NC系统与U8系统对比
一、软件对比
二、配置要求对比U8系统要求
操作系统:Windows 2000 Server(SP4(Service Pack 4)以上)数据库:SQL Server 2000 (SP3以上)。
NC系统要求
对服务器硬件要求
对操作系统要求
三、投资预算对比。
金蝶BOS与NC_UAP竞争分析
务一体化 支持虚拟组织
组织 模型
团-公司-部门结构, 部门在公司内维护,NC的 采购组织,销售组织, 会计主体都是集团档案, 必须在集团维护 NC的业务受限于财务组织 结构
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P13
业务建模工具
BOS
BOS业务建模工具(BIM) NC
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P10
工作流建模
BOS
丰富的流程模板,方便用
UAP
没有流程模板 没有流程授权
户快速定义工作流 支持流程授权
工ห้องสมุดไป่ตู้ 流
员工,角色,岗位 ,自动计算 设定判断条件
与消息平台集成
自动执行 单据自动转换, BOTP调用等
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P7
网络传输及系统安全
BOS
自主知识产权的ORM-RPC传 HTTP协议 没有加密压缩传输
UAP
输协议 支持https客户端与服务器 之间数据加密压缩传输,加 密位是128位 用户多级密码策略 支持USBKey、动态密码卡、 CA证书等
网络 传输
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P8
门户(Portal)
BOS
完全的门户应用,系统自
UAP
其产品是B/S应用,但并没
带门户服务器引擎,也可以 支持其他的门户系统 支持JSR和WAP协议标准; 内置单点登录实现;用户的 统一管理可以使用LDAP/AD、 数据库; 基于角色的门户应用(如 总裁门户,财务经理门户, 采购经理门户等,财务会计 门户)。
UAP
零散编程,已经无法重构 大量应用使用内存,内存
用友软件股份有限公司总体业务策略2010
基于效益的高速增长战略控局管理软件市场——用友软件股份有限公司总体业务策略用友软件股份有限公司执行副总裁兼首席运营官李友PDF下载尊敬的各位领导、各位嘉宾、各位朋友,大家下午好!我们用友公司本部业务是用友集团最大的一个业务,这个业务今年在王总的领导下,我本人作为这个业务的执行副总裁兼COO,跟章培林副总、向总、马总一起把我们集团新三年的战略,在集团的业务里面执行好。
下面,我会把总体的业务策略跟大家报告一下。
接下来培林副总会对我们的高端业务做一个简单的报告;向总会把终端业务和医疗业务做一个报告;马总会把培训业务做一个报告。
股份公司,我们确实看到2010年进入了一个全新、崭新的时代。
我们也知道2010年,我们社会也进入了一个崭新的时点。
从2010年,我们股份公司开始在公司总的战略框架下,对我们来讲是非常战略、非常重要、非常关键的三年。
这三年里面公司总的业务策略大概有四个方面:第一,是我们深化客户经营,这是我们公司最核心的业务策略。
第二,是进行持续的产品创新。
第三,是加速市场覆盖。
第四,是有效的进行收购兼并。
另外,我们在经营方面要优化我们的经营结构,提升集团公司的经营效益。
下面我分别介绍一下深化客户经营里面的业务策略:大家知道,我们公司从2010年开始,我们从股份公司的业务到本部业务全面转向行业化和客户经营。
在过去的三年,我们探索了很多客户经营和理念的实践,已经取得了非常好的成果,同时有了很好的基础。
在这个基础上,我们新的三年整个客户经营会转向行业化的经营和指定客户经营。
行业化大家可以从几个方面看到:第一,是客户的需求、客户的要求。
我们知道整个企业信息化进入到一个新的阶段。
新的阶段进入到比较深入的阶段。
在新的阶段里面行业化的应用差异,是企业客户的需求,在不同行业里面确实对信息化有更加深入、更加前端的应用,行业化特征是非常非常的明显。
第二,我们看行业里面有更多的客户群,更多的市场空间,这样有利于我们股份公司的业务高速成长。
JAVARSA私钥加密(签名)对应C#RSA私钥加密(签名)
JAVARSA私钥加密(签名)对应C#RSA私钥加密(签名)⾮对称密钥RSA算法加解密在C#和Java之间交互的问题,这两天看了很多其他⼈写的⽂章,碰到了⼏个问题,最终解决问题。
需求⽬的:完成c#请求端RSA加密(签名)问题,客户端采⽤C#开发,服务器端采⽤Java开发。
服务器端给客户端提供私钥,进⾏数据加密(签名),客户端加密(签名)后提数据提交给服务器,服务器⽤公钥对数据解密,进⾏验证。
解决过程碰到的问题:1.JAVA 需要的 RSA私钥格式和 C# 需要的 RSA私钥不⼀致。
JAVA 需要是 PKCS8格式私钥:-----BEGIN PRIVATE KEY-----MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOwuOHH/OIRE+0ifmEPYGuhYRTyKdd6VLFIsNqy/SO5xZitHfA7xEymJKnpEUGgDJKr5zbFbytnWs5Jjgen6TXkUh9LG/fhPGGHdUVB42pAHv5yzoyEaOnJxBAxd6UstoWTaEgbT6GUbzMr/Az25zuxw7c+skAlnUETVE5GL3tD7AgMBAAECgYEAxdNZODMctb3J9OSo93rV3vPA2prna87rVtDt4vg+MGsPtwSjZyiKcmoQCGWcK+MmHYgrwHkwihKKSv3KXZ9or3xQ2wNZGuTHLymWEzqfEfVb0igvxbe85EGwsaN3qSK62CK8vok/Bi+fZVa3UNCn0WFslUS0qn+K3SECM9I1iwECQQD+2Pl2AJGQs2bRXSsnJk0FIwjpqdpGZFPlAUYaXkuTMqpwefP/bwwiuWqq9QIt2vAAKgy5T16tpPBcGpT6cvxBAkEA7T+i1gVwrXcozTuT9oCwkF2MGBaXkv3mN9H/Pfy/oIhTsgiDxX8t+0KapAEQogvCuAOq19JvGw5e91H2g0suOwJAJOMnCIuAhl9RTJCdxGbo0wuFKL0rGPFAq28JxJtNeRrmTK16QcjDCuunouMf059TCdMMUG5Kl/u9xrcaRT4LgQJAZPiUYOnnzqvMHayhiGO0wXxOx2G2GMUeWdtx+fu7wqLCnB6rlj5OX4U1M1+QqKbAtHg7Gadhye4P1Mp5U9+HSQJBANLVzcCXyAX2D12UPTPkhcNRaCRXFp3aJGMxI4iluUC+ukAdiapohqZ7vMQyWRq/tDyiwjirqMcg/AJIuQWmPyc=-----END PRIVATE KEY-----C# 需要的是 PKCS1 格式私钥:-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQDsLjhx/ziERPtIn5hD2BroWEU8inXelSxSLDasv0jucWYrR3wO8RMpiSp6RFBoAySq+c2xW8rZ1rOSY4Hp+k15FIfSxv34Txhh3VFQeNqQB7+cs6MhGjpycQQMXelLLaFk2hIG0+hlG8zK/wM9uc7scO3PrJAJZ1BE1RORi97Q+wIDAQABAoGBAMXTWTgzHLW9yfTkqPd61d7zwNqa52vO61bQ7eL4PjBrD7cEo2coinJqEAhlnCvjJh2IK8B5MIoSikr9yl2faK98UNsDWRrkxy8plhM6nxH1W9IoL8W3vORBsLGjd6kiutgivL6JPwYvn2VWt1DQp9FhbJVEtKp/it0hAjPSNYsBAkEA/tj5dgCRkLNm0V0rJyZNBSMI6anaRmRT5QFGGl5LkzKqcHnz/28MIrlqqvUCLdrwACoMuU9eraTwXBqU+nL8QQJBAO0/otYFcK13KM07k/aAsJBdjBgWl5L95jfR/z38v6CIU7IIg8V/LftCmqQBEKILwrgDqtfSbxsOXvdR9oNLLjsCQCTjJwiLgIZfUUyQncRm6NMLhSi9KxjxQKtvCcSbTXka5kytekHIwwrrp6LjH9OfUwnTDFBuSpf7vca3GkU+C4ECQGT4lGDp586rzB2soYhjtMF8TsdhthjFHlnbcfn7u8Kiwpweq5Y+Tl+FNTNfkKimwLR4OxmnYcnuD9TKeVPfh0kCQQDS1c3Al8gF9g9dlD0z5IXDUWgkVxad2iRjMSOIpblAvrpAHYmqaIame7zEMlkav7Q8osI4q6jHIPwCSLkFpj8n-----END RSA PRIVATE KEY-----2.私钥格式之间的转换问题java 代码,注意这⾥的私钥:是Pem私钥⽂件中去除头(-----BEGIN PRIVATE KEY-----)和尾(-----END PRIVATE KEY-----)以及换⾏符后的字符串1 /**2 * @data: 待加密的字符串3 * @privateKey: 私钥4 */5 public static String sign(byte[] data, String privateKey) throws Exception {67 byte[] keyBytes = new BASE64Decoder().decodeBuffer(privateKey);8 PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);910 KeyFactory keyFactory = KeyFactory.getInstance("RSA");1112 PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);1314 Signature signature = Signature.getInstance("SHA1withRSA");15 signature.initSign(priKey);16 signature.update(data);1718 return byte2hex(signature.sign());19 }c# 代码,注意这⾥的私钥:是Pem私钥⽂件中去除头(-----BEGIN RSA PRIVATE KEY-----)和尾(-----END RSA PRIVATE KEY-----)以及换⾏符后的字符串1 /// <summary>2 /// 签名3 /// </summary>4 /// <param name="data">待加密的字符串</param>5 /// <param name="privateKey">私钥</param>6 /// <returns></returns>7 public static string Sign(string data, string privateKey)8 {9 RSACryptoServiceProvider rsaCsp = LoadCertificate(privateKey);10 byte[] dataBytes = Encoding.UTF8.GetBytes(data);11 byte[] signatureBytes = rsaCsp.SignData(dataBytes, "SHA1");12 return Hex_2To16(signatureBytes);13 }1415 private static RSACryptoServiceProvider LoadCertificate(string privateKey)16 {17 byte[] res = res = Convert.FromBase64String(privateKey);18 try19 {20 RSACryptoServiceProvider rsa = DecodeRSAPrivateKey(res);21 return rsa;22 }23 catch (Exception ex)24 {25 }26 return null;27 }2829 private static RSACryptoServiceProvider DecodeRSAPrivateKey(byte[] privkey)30 {31 byte[] MODULUS, E, D, P, Q, DP, DQ, IQ;3233 // --------- Set up stream to decode the asn.1 encoded RSA private key ------34 MemoryStream mem = new MemoryStream(privkey);35 BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading36 byte bt = 0;37 ushort twobytes = 0;38 int elems = 0;39 try40 {41 twobytes = binr.ReadUInt16();42 if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81)43 binr.ReadByte(); //advance 1 byte44 else if (twobytes == 0x8230)45 binr.ReadInt16(); //advance 2 bytes46 else47 return null;4849 twobytes = binr.ReadUInt16();50 if (twobytes != 0x0102) //version number51 return null;52 bt = binr.ReadByte();53 if (bt != 0x00)54 return null;555657 //------ all private key components are Integer sequences ----58 elems = GetIntegerSize(binr);59 MODULUS = binr.ReadBytes(elems);6061 elems = GetIntegerSize(binr);62 E = binr.ReadBytes(elems);6364 elems = GetIntegerSize(binr);65 D = binr.ReadBytes(elems);6667 elems = GetIntegerSize(binr);68 P = binr.ReadBytes(elems);6970 elems = GetIntegerSize(binr);71 Q = binr.ReadBytes(elems);7273 elems = GetIntegerSize(binr);74 DP = binr.ReadBytes(elems);7576 elems = GetIntegerSize(binr);77 DQ = binr.ReadBytes(elems);7879 elems = GetIntegerSize(binr);80 IQ = binr.ReadBytes(elems);818283 // ------- create RSACryptoServiceProvider instance and initialize with public key -----84 CspParameters CspParameters = new CspParameters();85 CspParameters.Flags = eMachineKeyStore;86 RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(1024, CspParameters);87 RSAParameters RSAparams = new RSAParameters();88 RSAparams.Modulus = MODULUS;89 RSAparams.Exponent = E;90 RSAparams.D = D;91 RSAparams.P = P;92 RSAparams.Q = Q;93 RSAparams.DP = DP;94 RSAparams.DQ = DQ;95 RSAparams.InverseQ = IQ;96 RSA.ImportParameters(RSAparams);97 return RSA;98 }99 catch (Exception ex)100 {101 return null;102 }103 finally104 {105 binr.Close();106 }107 }108109 private static int GetIntegerSize(BinaryReader binr)110 {111 byte bt = 0;112 byte lowbyte = 0x00;113 byte highbyte = 0x00;114 int count = 0;115 bt = binr.ReadByte();116 if (bt != 0x02) //expect integer117 return 0;118 bt = binr.ReadByte();119120 if (bt == 0x81)121 count = binr.ReadByte(); // data size in next byte122 else123 if (bt == 0x82)124 {125 highbyte = binr.ReadByte(); // data size in next 2 bytes126 lowbyte = binr.ReadByte();127 byte[] modint = { lowbyte, highbyte, 0x00, 0x00 };128 count = BitConverter.ToInt32(modint, 0);129 }130 else131 {132 count = bt; // we already have the data size133 }134135 while (binr.ReadByte() == 0x00)136 { //remove high order zeros in data137 count -= 1;138 }139 binr.BaseStream.Seek(-1, SeekOrigin.Current); //last ReadByte wasn't a removed zero, so back up a byte 140 return count;141 }142143144 /// <summary>145 /// 2进制转16进制146 /// </summary>147 public static String Hex_2To16(Byte[] bytes)148 {149 String hexString = String.Empty;150 Int32 iLength = 65535;151 if (bytes != null)152 {153 StringBuilder strB = new StringBuilder();154155 if (bytes.Length < iLength)156 {157 iLength = bytes.Length;158 }159160 for (int i = 0; i < iLength; i++)161 {162 strB.Append(bytes[i].ToString("X2"));163 }164 hexString = strB.ToString(); 165 }166 return hexString;167 }。
Amazon使用指南
Amazon使用指南一、Amazon Web Services简介Amazon Web Services是一组服务,可以通过程序访问 Amazon 的计算基础设施。
只要能够访问 Internet就可以使用Amazon Web Services。
Amazon 提供多种Web服务,最基本的服务包括存储、计算、消息传递和数据集。
通过Amazon 提供的可靠且经济有效的服务上构建功能,可以实现复杂的企业应用程序。
这些 Web 服务本身驻留在用户所在物理环境之外的云中,具备极高的可用性。
只需根据使用的资源付费,不需要提前付费,具有很强的弹性计算能力。
因为硬件由 Amazon维护和服务,从而降低了用户的使用难度、成本和维护费用。
公司不再需要承担高额的基础设施投资和维护成本,这为创新提供了更大的机会。
使得用户集中于其本身的业务,而无需为服务器、磁盘空间、操作系统和应用软件的维护、安装、更新等相关的计算环境问题。
根据 Amazon的估计,传统企业大约花费 70% 的时间用于构建和维护基础设施上,在推动企业发展的思想上实际上只花费 30% 的时间。
现在,Amazon 会处理与硬件和基础设施相关的繁琐工作,并确保其高可用性,用户只需关注其自己的核心业务。
Amazon提供的存储服务。
所有应用程序都需要存储文件、文档、用户下载或备份。
现在,可把应用程序需要的任何文件存储在 Amazon Simple Storage Service (S3) 中,从而实现可伸缩、可靠、高可用、低成本的存储。
Amazon Elastic Compute Cloud (EC2) 能够根据需要扩展或收缩计算资源,非常方便地提供新的服务器实例。
Amazon Simple Queue Service (SQS) 提供不受限制的可靠的消息传递,可以使用它消除应用程序组件之间的耦合。
Amazon SimpleDB (SDB) 提供可伸缩、包含索引且无需维护的数据集存储,以及处理和查询功能。
用友、金蝶、鼎捷软件ERP对比
鼎捷软件提供完善的机械五金行业客户解决方案,每家机械五金客户都成功应用工艺管理和委外模块,并为实际成本的结算提供准确及时的支持,实际成本的及时准备结出一直是鼎捷软件评价自己可以系统应用是否成功的一个重要标准。顺德高力威机械、顺德丰凯机械、顺德凯迪威机械、佛山恒力泰机械、三水合和建筑五金等客户原来都是用友、金蝶客户后来都转用鼎捷软件易飞ERP。
鼎捷软件认为ERP是口碑的事业,从来不做广告,依靠客户口碑成就自己。顺德五沙工业区的宏泽电器原来是金蝶的客户,后来在其供应商剑虹电器的介绍下转用易飞ERP,一年后宏泽的陈总介绍同在五沙的安博电子使用鼎捷软件ERP。
2001年12月28日,金蝶也差不多同样的时间收购了国内一直做MRP软件并濒临倒闭的开思来弥补自己没有的生产模块。许少春希望金蝶能与开思做无缝整合,实际上做过软件开发的都知道两个由不同团队开发的软件要做无缝的结合是几乎无法实现的事情,况且开思的系统是基于JAVA平台,金蝶是用微软的VB,分别基于软件界势同水火的两大巨头的平台。这也是金蝶所谓的高端产品EAS基于JAVA平台的原因,当时金蝶收购开思是就定位开司的TEEMS系到成本都有完整体验。
