使用Bouncy城​​堡库进行签名和加密

2020-08-16 04:49发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我正在使用CPI作为...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我正在使用CPI作为中间件,以通过SFTP将数据发送到银行服务器。

首先应对有效负载进行分割,然后再对其进行加密。 但是,按照CPI中的标准PGP加密器,它先加密然后签名。 因此目标系统无法解密,因为它没有首先签名。

我知道,使用有弹性的城堡库,我们可以先对有效负载进行签名,然后在CPI中对其进行加密。

关于CPI需要做什么以及需要在groovy脚本中上传哪些库/代码,有人可以指导我吗?

任何指针都值得赞赏。

谢谢,

尼采什

2条回答
小c菟菟
2020-08-16 05:24

您好 Nitheesh Cherrikkal

基本上,您必须在iFlow中添加Groovy脚本,然后 配置它以使用Java库,该库将包含您自己的方法,该方法实现使用BC所需的任何功能。 该库必须在jar文件中包含嵌入的BC。

首先,您可以像这样使用maven创建Java项目:

 mvn原型:generate -DarchetypeGroupId = org.codehaus.groovy.maven.archetypes -DarchetypeArtifactId = gmaven-archetype- 基本

然后按照屏幕上的说明进行操作。

创建后,添加BC依赖项。 很大程度上取决于您要使用BC实现的目标,但您可以使用以下内容作为开头:

 
              org.bouncycastle 
              bcpg-jdk15on 
              1.65 
         
        
         <依赖性>
              org.bouncycastle 
              bcprov-jdk15on 
              1.65 
         
 

定义要公开地"导出"的方法-以便以后可以在groovy脚本上将它们用作自己的库。 以下只是一个简单的框架,因此您可以理解。

公共类PgpEncrypt {
 ...
   公共静态无效加密(InputStream输入,OutputStream输出Stream
 ...)引发异常{
 ...
   }
 } 

使用CPI Cockpit-> iFlow->资源选项卡将jar文件和任何其他文件上传到CPI

然后,您可以添加groovy脚本来使用来处理有效负载 您的包含BC库的jar就像这样:

 import com.sap.gateway.ip.core.customdev.util.Message;
 导入<您的java_lib_包含的您的类> .PgpEncrypt
 ...
 进口...

 def消息processData(消息消息){
 ...
   def输入= message.getBody(InputStream.class);
   OutputStream输出=新的ByteArrayOutputStream();
   PgpEncrypt.encrypt(输入,输出);
   byte []结果= output.toByteArray();
 ...
   message.setBody(result);
   返回消息;
 } 

注意1:请记住,我只是为您提供一些有关如何实现所需内容的指南。 但是,您必须开发自己的逻辑以使用BC对加密消息进行签名。 因此,我建议您开始在Java项目上使用测试驱动的开发,一旦一切就绪,便可以更有效地使用groovy脚本。

注2:PGP公钥环和任何其他密钥文件 您需要执行的签名在Groovy脚本中可能不可用。 因此,您可能需要将它们导入资源选项卡。

最好的问候,
伊凡

一周热门 更多>