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 = '<implicit>'."
  APPEND LS_RECIPIENT_LIST TO LT_RECIPIENT_LIST.

  CALL FUNCTION 'SSFW_KRN_ENVELOPE'
    EXPORTING
      STR_FORMAT          = 'PKCS1-V1.5'
      STR_PAB             = '<no_certificate_check>'
      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.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值