• 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.

  • 相关阅读:
    上手Python之set(集合)
    CSS特效004:hover图片,显示文字或附加层
    Node.js开发-fs模块
    uniapp自定义顶部导航栏
    Java.lang.Byte类之parseByte(String s, int radix)方法的简介说明
    AJAX——案例_天气预报
    js表单autocomplete=‘off‘失效问题
    Android HIDL(1) ---- 概述
    阿里后端开发:抽象建模经典案例【文末送书】
    前端入职配置新电脑!!!
  • 原文地址:https://blog.csdn.net/u014535256/article/details/126698872