【问题标题】:Getting CPF9DEC error when calling Qc3EncryptData调用 Qc3EncryptData 时出现 CPF9DEC 错误
【发布时间】:2021-04-07 17:12:48
【问题描述】:

调用 Qc3EncryptData 以使用三重 DES 加密数据时,我收到 CPF9DEC(加密服务提供程序无效)错误。我为此“加密服务提供者”参数(参数 8)传递了“0”的值。根据 IBM 文档(参见下面的链接),“0”值表示任何 CSP(系统将选择适当的 CSP 来执行加密操作)。知道如何通过此错误吗?

https://www.ibm.com/docs/en/i/7.4?topic=ssw_ibm_i_74/apis/qc3encdt.htm#algd0200

以下是我的代码的精简版:

  * algorithm DS                                       
 D ALGD0200...                                         
 D                 DS                  qualified       
 D  algorithm                    10i 0 inz(21)         
 D  algorithmBlockLen...                               
 D                               10i 0 inz(8)          
 D  mode                          1    inz('1')        
 D  padOption                     1    inz('2')        
 D  padChar                       1    inz(x'00')      
 D  reserved                      1    inz(x'00')      
 D  MACLen                       10i 0 inz(0)          
 D  keySize                      10i 0 inz(0)          
 D  inzVector                    32    inz('myvector') 
                                                       
  * key DS                                             
 D KEYD0200...                                         
 D                 DS                  qualified       
 D  keyType                      10i 0 inz(21)         
 D  keyLen                       10i 0 inz(24)         
 D  keyFormat                     1    inz('0')                        
 D  reserved                      3    inz(*allx'00')                  
 D  key                          32    inz('123456789012345678901234') 
                                                                       
  * error DS                                                           
 D reffldIBMErrorDS...                                                 
 D                 DS                  qualified template              
 D  totalLen                     10I 0 Inz(%Size(reffldIBMErrorDS))    
 D  resultLen                    10I 0 inz(0)                          
 D  msgID                         7A                                   
 D  reserved                      1A   inz(x'00')                      
 D  msgDta                      256A                                   
                                                                       
  * ibm encrypt api                                                    
 D Qc3EncryptData  PR                  extProc('Qc3DecryptData')       
 D  piClearData               65535A   options(*varsize) const         
 D  piClearDataLen...                                                  
 D                               10I 0 const                           
 D  piClearDataFormatName...                                           
 D                                8    const                    
                                                                
 D  piAlgorithm                  64A   const options(*varsize)  
 D  piAlgorithmFormat...                                        
 D                                8A   const                    
                                                                
 D  piKeyDesc                   512A   const options(*varsize)  
 D  piKeyFormat                   8A   const                    
 D  piCryptoServiceProvider...                                  
 D                                1A   Const                    
 D  piCryptoDeviceName...                                       
 D                               10A   Const options(*omit)     
 D  piEncData                 65535A   options(*varsize)        
 D  piEncDataSize                10I 0 const                    
 D  piEncDataLen                 10I 0                          
 D  piApiErrorDS                       likeds(reffldIBMErrorDS) 
 D                                     options(*varsize)        
                                                                
 D myClearData     s           3000    inz('Hello World')       
 D myEncData       s          65535A                            
 D myEncDataLen    s             10I 0                          
 D myIBMApiErr     ds                  likeDS(reffldIBMErrorDS) 
 D                                     inz(*likeds)             
                                                                
  /free                                                         
                                                                
                                                                
     // encrypt the data                                        
     Qc3EncryptData(myClearData  :%len(%trimr(myClearData))     
                   :'DATA0100'                                  
                   :ALGD0200         :'ALGD0200'                
                   :KEYD0200         :'KEYD0200'                
                   :'0'              :' '                       
                   :myEncData        :%size(myEncData)          
                   :myEncDataLen     :myIBMApiErr               
                   );                                           
                                                                
    *inlr = *on;                                                

  /end-free

【问题讨论】:

  • 显示您的代码,包括正在使用的原型。
  • 在帖子中添加了我的代码的精简版。

标签: rpgle


【解决方案1】:

我发现了问题。在我的原型中,我将 extproc 作为 Qc3DecryptData。应该是Qc3EncryptData

D Qc3EncryptData PR extProc('Qc3DecryptData')

【讨论】:

    猜你喜欢
    • 2018-04-20
    • 2017-03-06
    • 2013-02-08
    • 1970-01-01
    • 2012-03-23
    • 2016-05-25
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多