PowerBuilder--Aes128加解密

通过C#开发Com控件,注册到系统,然后由pb通过OLEObject进行调用

原文:https://www.cnblogs.com/eric_ibm/archive/2012/07/06/dll.html

代码(VS2010)+ 动态库:https://pan.baidu.com/s/17jFggInvIaYD_kEDqHhRpg

PB代码:

复制代码
//====================================================================
// 事件: u_sysfunc.uf_encrypt_aes128()
//--------------------------------------------------------------------
// 描述: aes128 加密
//--------------------------------------------------------------------
// 参数:
//     value    string    as_key     秘钥
//     value    string    as_data    被加密数据
//     reference    string    as_data_encrypted 密文
//--------------------------------------------------------------------
// 返回:  string
//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================
Int li_ret
String ls_msg

OLEObject encryption

//调用第三方库进行加密
Try
    encryption = Create OLEObject
    li_ret = encryption.ConnectToNewObject("com.cz.encry.Encryption")
    
    If li_ret <> 0 Then
        as_data_encrypted = '调用加密COM组件错误'
        If Isvalid(encryption) Then
            encryption.DisconnectObject()
            Destroy encryption
        End If
        Return -1
    End If
    as_data_encrypted = encryption.Encrypt(as_data, as_key)
    
Catch (RuntimeError e)
    ls_msg = e.getmessage()
    as_data_encrypted = '加密出错:' + ls_msg
    If Isvalid(encryption) Then
        encryption.DisconnectObject()
        Destroy encryption
    End If
    Return -1
End Try

If Isvalid(encryption) Then
    encryption.DisconnectObject()
    Destroy encryption
End If

Return 1
复制代码
复制代码
//====================================================================
// 事件: u_sysfunc.uf_decrypt_aes128()
//--------------------------------------------------------------------
// 描述: aes128 解密
//--------------------------------------------------------------------
// 参数:
//     value    string    as_key     秘钥
//     value    string    as_data    被解密数据        
//     reference    string    as_data_decrypted    
//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================
Int li_ret
String ls_msg

OLEObject encryption

//调用第三方库进行解密

Try
    encryption = Create OLEObject
    li_ret = encryption.ConnectToNewObject("com.cz.encry.Encryption")
    
    If li_ret <> 0 Then
        as_data_decrypted = '调用解密COM组件错误'
        If Isvalid(encryption) Then
            encryption.DisconnectObject()
            Destroy encryption
        End If
        Return -1
    End If
    as_data_decrypted = encryption.Decrypt(as_data, as_key)
    
Catch (RuntimeError e)
    ls_msg = e.getmessage()
    as_data_decrypted = '解密出错:' + ls_msg
    If Isvalid(encryption) Then
        encryption.DisconnectObject()
        Destroy encryption
    End If
    Return -1
End Try

If Isvalid(encryption) Then
    encryption.DisconnectObject()
    Destroy encryption
End If


Return 1
复制代码

 

posted @   liDB  阅读(1265)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示