技术开发 频道

biztalk中消息加密解密实例详解


3. 解密端设计

3.1.新建用于解密的接收管道

     解密是在接收管道的MIME/SMIME decoder组件中进行,新建一个发送管道ReceivePipelineDecrypt.btp,在管道的decode阶段放置上MIME/SMIME decoder组件,然后对组件设置下列属性:

    l Allow non MIME message – false
   是否允许非MIME消息,选false

    l Body part index – 0
   当有多个部分时,选哪一个部分为消息正文部分,选0

    l Chect revocate list – false
   当接收到一个加密的消息时是否检查证书吊销表,选择false

   在管道的Disassemble阶段放置XML Disassembler组件,以解析xml消息,提升消息中属性和消息类型。

3.2. 设计流程

    同样用于解密的OrchestrationDecrypt.odx流程也是十分的简单:

3.3. 配置端口

    项目部署后,在biztalk administration console配置物理端口。

    Port_2_1绑定到一个File接收端口指向文件夹3(EncryptIn),接收加密的消息。接收位置的接收管道选上面新建的ReceivePipelineDecrypt.btp管道。

    Port_2_2绑定到一个File发送端口指向文件夹4(DecryptOut),这个端口的把接收位置解密后的消息,直接写入到文件夹。

4. 测试

    在本文提供的测试项目代码中有两个测试消息:testSim.xml和testSimL.xml

    用testSim.xml做测试,testSim.xml消息如下:

<ns0:id xmlns:ns0="http://CertEndryptMsg.MsgScheSim">simple</ns0:id> 

  

    把这个文件拷贝到项目下的PlainTextIn目录中,如果正常,在EncryptOut目录下会有加密后的消息输出,打开加密后的消息,是这样的:

Content-ID: {C101BFE8-B609-4B8A-834A-B7874097E0BD} 

Content-Description: body

Bcc:

MIME-Version: 1.0

Content-type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"

Content-Transfer-Encoding: base64



MIAGCSqGSIb3DQEHA6CAMIACAQAxgcQwgcECAQAwKjAWMRQwEgYDVQQDEwtSb290IEFnZW5jeQIQ

WRRSbjmnU5FINb3pvccz7jANBgkqhkiG9w0BAQEFAASBgHr2zmAgr8kqK0FuEkAkg5lfahVrNuog

QvV+HbU0IKcI1AtsyH20aDwVLxankITC4Umzq47ZcnmNV+HiuNvHKaaVC/0wqwtLylKoKWXKTGoi

/dAewRHE3cV3xJRYFYEnxxDuTH5ORcXdzNmEx+ue+LQrN/m97b31Xe+V3n/ukL3TMIAGCSqGSIb3

DQEHATAUBggqhkiG9w0DBwQIGpLuzeYobt+ggASBsPvdVe4wYYawE5PZTz9UsQwta8PiNHo1NXLU

3XBa7hDcmc2FlO3PtiZ9tWlOZjjopsp3kqIj9w7HLWm/JrFR2sS0qEupZm7jvqSlREcnC8ql83xh

VcuOHYbwhhimGyfM4i5tHZbbVGzHHaxwfas3+hAQbzYyfScmP2XCZUj99+KntZS81NstQ7GCyTxa

v9pJF+8SZKMVmQ3EIdlcK75pPukoEzZlgNuhizgqZr7LZZYOAAAAAAAAAAAAAA==




 

   看到这样的内容,表示消息被正确的加密。

    然后把这个加密的消息拷贝到EncryptIn目录,正常情况下,在DecryptOut目录下会输出一个解密后的消息,消息内容跟一开始的testSim.xml一样。

0
相关文章