• sap abap rsa 加密


    FORM FRM_RSA_ENCODE USING PV_INPUT TYPE STRING  PV_SPK  TYPE STRING CHANGING PV_SECRET TYPE STRING
       CV_FLAG TYPE CHAR01 CV_MESS TYPE STRING .
      DATA: LV_OUTPUT         TYPE XSTRING,
            LV_INPUT_X        TYPE XSTRING,
            LV_INPUT          TYPE STRING,
            LV_CRC            TYPE SSFPARMS-SSFCRC,
            LT_RECIPIENT_LIST TYPE STANDARD TABLE OF SSFINFO,
            LS_RECIPIENT_LIST LIKE LINE OF LT_RECIPIENT_LIST.

      DATA: LV_BASE64    TYPE STRING,
            LV_PUBKEY    TYPE XSTRING,
            LV_PUBBASE64 TYPE STRING,
            LV_STR       TYPE STRING.

      LV_INPUT =  PV_INPUT .

      LV_INPUT_X = CL_BCS_CONVERT=>STRING_TO_XSTRING( LV_INPUT ).

      " 加密
      LV_PUBBASE64 =  PV_SPK .

      CALL FUNCTION 'SCMS_BASE64_DECODE_STR'
        EXPORTING
          INPUT  = LV_PUBBASE64
    *     UNESCAPE       = 'X'
        IMPORTING
          OUTPUT = LV_PUBKEY
        EXCEPTIONS
          FAILED = 1
          OTHERS = 2.

      " 模数 参考加密概述
      LV_STR = LV_PUBKEY.
      DATA(LENGTH) = STRLEN( LV_STR ).
      IF LENGTH > 514." 2048位密钥
        DATA(POS) = LENGTH - 10 - 514.
        LV_STR = LV_STR+POS(514).
      ELSEIF LENGTH > 256." 1024位密钥
        POS = LENGTH - 10 - 256.
        LV_STR = LV_STR+POS(256).
      ENDIF.

      " 函数使用密钥格式
      LV_STR = 'R:m=' && LV_STR && ':e=010001:'.
      LV_PUBKEY = CL_BCS_CONVERT=>STRING_TO_XSTRING( LV_STR ).

      LS_RECIPIENT_LIST-ID = ''."
      APPEND LS_RECIPIENT_LIST TO LT_RECIPIENT_LIST.

      CALL FUNCTION 'SSFW_KRN_ENVELOPE'
        EXPORTING
          STR_FORMAT          = 'PKCS1-V1.5'
          STR_PAB             = ''
          STR_CHAINFMT        = 'KEYVALUE'
          OSTR_CHAIN_DATA     = LV_PUBKEY
          OSTR_INPUT_DATA     = LV_INPUT_X
        IMPORTING
          OSTR_ENVELOPED_DATA = LV_OUTPUT
          CRC                 = LV_CRC
        TABLES
          RECIPIENT_LIST      = LT_RECIPIENT_LIST
        EXCEPTIONS
          OTHERS              = 1.

      CALL FUNCTION 'SCMS_BASE64_ENCODE_STR'
        EXPORTING
          INPUT  = LV_OUTPUT
        IMPORTING
          OUTPUT = LV_BASE64.

      PV_SECRET = LV_BASE64.

    ENDFORM.

  • 相关阅读:
    SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.18 查询文档
    【Kubernetes 系列】ConfigMap 进阶 环境变量的配置及使用
    机器学习中的几种交叉验证方法(5种)
    python基础之函数模块的导入
    扬帆际海—为什么要做shopee跨境本土店
    JAVA在线课程教学大纲系统计算机毕业设计Mybatis+系统+数据库+调试部署
    数据库优化 | 干货
    【Serverless】快速集成云函数HarmonyOS
    MySQL如何查询某个字段含有字母数字的值
    虚拟机中CentOS-7.9的硬盘空间扩容(EXSI)
  • 原文地址:https://blog.csdn.net/u014535256/article/details/126698872