⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encryption.txt

📁 使用sap abap4 编写的 编码/解码程序。
💻 TXT
📖 第 1 页 / 共 3 页
字号:
        ev_checksum = lv_w2.


    IF lv_w1 NE lv_w2.
      RAISE wrong_password.
    ENDIF.

*   Copy output data to the ct_flat_c table
    CALL FUNCTION 'SCMS_BINARY_TO_FTEXT'
    EXPORTING
      input_length          = ev_size
    IMPORTING
     OUTPUT_LENGTH          = len
    tables
      binary_tab            = ct_flat_x
      ftext_tab             = ct_flat_c.

    CALL METHOD reset.

  ENDMETHOD.                    "decrypt


**************************************************
* Set password
  METHOD setpasswd.
*    DATA: lv_length TYPE i.
    DATA: lv_str_temp TYPE string.
    data: lv_strxtemp type xstring.
*    DATA: lv_str TYPE t_bfzip_str.
    DATA: lv_xpasswd TYPE t_xpasswd.
*    lv_length = strlen( iv_passwd ).
*
*    lv_xpasswd = lv_str-line.
*    IF lv_length > 72.
*      lv_length = 72.
*    ENDIF.



    lv_str_temp = iv_passwd.
    CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
      EXPORTING
        text           = lv_str_temp
*   MIMETYPE       = ' '
*   ENCODING       =
     IMPORTING
        buffer         = lv_strxtemp
* EXCEPTIONS
*   FAILED         = 1
*   OTHERS         = 2
              .
    lv_xpasswd = lv_strxtemp.
    CALL METHOD reset.
*    IF lv_length > 0.
      CALL METHOD generatesubkeys
        EXPORTING
          iv_passwd = lv_xpasswd
          iv_length = 72.
*    ENDIF.

  ENDMETHOD.                    "setpasswd


**************************************************
* one word encryption
  METHOD bf_encoding.
    DATA: lv_w1 TYPE t_word_base,
          lv_w2 TYPE t_word_base,
          lv_wt1 TYPE t_word_base,
          lv_wt2 TYPE t_word_base.
    DATA: lv_temp1 TYPE t_word_base,
          lv_i TYPE i.
    FIELD-SYMBOLS: <fs_pa> TYPE t_word_base.

    lv_w1 = cv_w1.
    lv_w2 = cv_w2.

    lv_i = 1.
    WHILE lv_i < 17.
      READ TABLE pa INDEX lv_i ASSIGNING <fs_pa>.
      lv_wt1 = <fs_pa>.
      lv_w1 = lv_w1 BIT-XOR lv_wt1.
      CALL METHOD fw
        EXPORTING
          iv_w = lv_w1
        IMPORTING
          ev_w = lv_wt2.
      lv_w2 = lv_w2 BIT-XOR lv_wt2.
      lv_temp1 = lv_w1.
      lv_w1 = lv_w2.
      lv_w2 = lv_temp1.
      lv_i = lv_i + 1.
    ENDWHILE.
    lv_temp1 = lv_w1.
    lv_w1 = lv_w2.
    lv_w2 = lv_temp1.

    READ TABLE pa INDEX 17 ASSIGNING <fs_pa>.
    lv_wt2 = <fs_pa>.
    lv_w2 = lv_w2 BIT-XOR lv_wt2.

    READ TABLE pa INDEX 18 ASSIGNING <fs_pa>.
    lv_wt1 = <fs_pa>.
    lv_w1 = lv_w1 BIT-XOR lv_wt1.

    cv_w1 = lv_w1.
    cv_w2 = lv_w2.


  ENDMETHOD.                    "bf_encoding

**********************************************
* Decoding

  METHOD bf_decoding.

    DATA: lv_w1 TYPE t_word_base,
        lv_w2 TYPE t_word_base,
        lv_wt1 TYPE t_word_base,
        lv_wt2 TYPE t_word_base.
    DATA: lv_temp1 TYPE t_word_base,
          lv_i TYPE i.
    FIELD-SYMBOLS: <fs_pa> TYPE t_word_base.

    lv_w1 = cv_w1.
    lv_w2 = cv_w2.

    lv_i = 18.
    WHILE lv_i > 2.
      READ TABLE pa INDEX lv_i ASSIGNING <fs_pa>.
      lv_wt1 = <fs_pa>.
      lv_w1 = lv_w1 BIT-XOR lv_wt1.
      CALL METHOD fw
        EXPORTING
          iv_w = lv_w1
        IMPORTING
          ev_w = lv_wt2.
      lv_w2 = lv_w2 BIT-XOR lv_wt2.
      lv_temp1 = lv_w1.
      lv_w1 = lv_w2.
      lv_w2 = lv_temp1.
      lv_i = lv_i - 1.
    ENDWHILE.
    lv_temp1 = lv_w1.
    lv_w1 = lv_w2.
    lv_w2 = lv_temp1.

    READ TABLE pa INDEX 2 ASSIGNING <fs_pa>.
    lv_wt2 = <fs_pa>.
    lv_w2 = lv_w2 BIT-XOR lv_wt2.

    READ TABLE pa INDEX 1 ASSIGNING <fs_pa>.
    lv_wt1 = <fs_pa>.
    lv_w1 = lv_w1 BIT-XOR lv_wt1.

    cv_w1 = lv_w1.
    cv_w2 = lv_w2.

  ENDMETHOD.                    "bf_decoding

**************************************************
* generate new keys tables

  DEFINE inc_lv_j.
    if &1 = &2.
      &1 = 0.
    else.
      &1 = &1 + 1.
    endif.
  END-OF-DEFINITION.

  METHOD generatesubkeys.

    DATA: lv_i TYPE i,
          lv_j TYPE i.
    DATA: lv_w1 TYPE t_word_base,
          lv_w2 TYPE t_word_base,
          lv_wt1 TYPE t_word_base.
    FIELD-SYMBOLS: <fs_pa> TYPE t_word_base.
    FIELD-SYMBOLS: <fs_word> TYPE t_fword3.

    lv_i = 1.
    lv_j = 0.
    WHILE lv_i < 19.

      lv_w1(1) = iv_passwd+lv_j(1).
      inc_lv_j lv_j iv_length.
      lv_w1+1(1) = iv_passwd+lv_j(1).
      inc_lv_j lv_j iv_length.
      lv_w1+2(1) = iv_passwd+lv_j(1).
      inc_lv_j lv_j iv_length.
      lv_w1+3(1) = iv_passwd+lv_j(1).
      inc_lv_j lv_j iv_length.


      READ TABLE pa INDEX lv_i ASSIGNING <fs_pa>.
      lv_wt1 = <fs_pa>.
      <fs_pa> = lv_w1 BIT-XOR lv_wt1.

      lv_i = lv_i + 1.
    ENDWHILE.

    lv_w1 = lv_w2 = 0.

    lv_i = 1.
    WHILE lv_i < 19.
      CALL METHOD bf_encoding
        CHANGING
          cv_w1 = lv_w1
          cv_w2 = lv_w2.
      READ TABLE pa INDEX lv_i ASSIGNING <fs_pa>.
      lv_wt1 = <fs_pa>.
      <fs_pa> = lv_w1 BIT-XOR lv_wt1.
      lv_i = lv_i + 1.

      READ TABLE pa INDEX lv_i ASSIGNING <fs_pa>.
      lv_wt1 = <fs_pa>.
      <fs_pa> = lv_w1 BIT-XOR lv_wt1.
      lv_i = lv_i + 1.

    ENDWHILE.


    lv_i = 0.
    lv_j = 1.
    lv_w1 = lv_w2 = 0.
    WHILE lv_i < 4.
      WHILE lv_j < 257.
        CALL METHOD bf_encoding
          CHANGING
            cv_w1 = lv_w1
            cv_w2 = lv_w2.

        READ TABLE sb INDEX lv_j ASSIGNING <fs_word>.
        <fs_word>+lv_i(4) = lv_w1.
        lv_j = lv_j + 1.

        READ TABLE sb INDEX lv_j ASSIGNING <fs_word>.
        <fs_word>+lv_i(4) = lv_w2.
        lv_j = lv_j + 1.
      ENDWHILE.
      lv_i = lv_i + 1.
    ENDWHILE.


  ENDMETHOD.                    "generatesubkeys
**************************************************
* word transformation
  METHOD fw.
    DATA: t1 TYPE t_word_base, t2 TYPE t_word_base,
          t3 TYPE t_word_base, t4 TYPE t_word_base,
          res TYPE t_word_base.
    DATA: ind TYPE i.
    FIELD-SYMBOLS: <fs_word> TYPE t_fword3.

    ind = iv_w(1) + 1.
    READ TABLE sb INDEX ind ASSIGNING <fs_word>.
    t1 = <fs_word>(4).

    ind = iv_w+1(1) + 1.
    READ TABLE sb INDEX ind ASSIGNING <fs_word>.
    t2 = <fs_word>+4(4).

    ind = iv_w+2(1) + 1.
    READ TABLE sb INDEX ind ASSIGNING <fs_word>.
    t3 = <fs_word>+8(4).

    ind = iv_w+3(1) + 1.
    READ TABLE sb INDEX ind ASSIGNING <fs_word>.
    t4 = <fs_word>+12(4).

    res+1(3) = t1+2(2) + t2+2(2).
    res(2) = res(2) + t1(2) + t2(2).
    t1 = res.
    t1 = t1 BIT-XOR t3.
    res = '00000000'.
    res+1(3) = t1+2(2) + t4+2(2).
    res(2) = res(2) + t1(2) + t4(2).
    t1 = res.

    ev_w = t1.
  ENDMETHOD.                    "fw

**************************************************
* internal arrays initialization
  METHOD reset.
    DATA: wa_wordl TYPE t_word_base.
    DATA: wa_word TYPE t_fword3.


    CLEAR wa_wordl.
    CLEAR pa[].

    wa_wordl = '243F6A88'.
    APPEND wa_wordl TO pa.
    wa_wordl = '85A308D3'.
    APPEND wa_wordl TO pa.
    wa_wordl = '13198A2E'.
    APPEND wa_wordl TO pa.
    wa_wordl = '03707344'.
    APPEND wa_wordl TO pa.
    wa_wordl = 'A4093822'.
    APPEND wa_wordl TO pa.
    wa_wordl = '299F31D0'.
    APPEND wa_wordl TO pa.
    wa_wordl = '082EFA98'.
    APPEND wa_wordl TO pa.
    wa_wordl = 'EC4E6C89'.
    APPEND wa_wordl TO pa.
    wa_wordl = '452821E6'.
    APPEND wa_wordl TO pa.
    wa_wordl = '38D01377'.
    APPEND wa_wordl TO pa.
    wa_wordl = 'BE5466CF'.
    APPEND wa_wordl TO pa.
    wa_wordl = '34E90C6C'.
    APPEND wa_wordl TO pa.
    wa_wordl = 'C0AC29B7'.
    APPEND wa_wordl TO pa.
    wa_wordl = 'C97C50DD'.
    APPEND wa_wordl TO pa.
    wa_wordl = '3F84D5B5'.
    APPEND wa_wordl TO pa.
    wa_wordl = 'B5470917'.
    APPEND wa_wordl TO pa.
    wa_wordl = '9216D5D9'.
    APPEND wa_wordl TO pa.
    wa_wordl = '8979FB1B'.
    APPEND wa_wordl TO pa.

    CLEAR wa_word.
    CLEAR sb[].
    wa_word = 'D1310BA64B7A70E9E93D5A683A39CE37'.
    APPEND wa_word TO sb.
    wa_word = '98DFB5ACB5B32944948140F7D3FAF5CF'.
    APPEND wa_word TO sb.
    wa_word = '2FFD72DBDB75092EF64C261CABC27737'.
    APPEND wa_word TO sb.
    wa_word = 'D01ADFB7C4192623946929345AC52D1B'.
    APPEND wa_word TO sb.
    wa_word = 'B8E1AFEDAD6EA6B0411520F75CB0679E'.
    APPEND wa_word TO sb.
    wa_word = '6A267E9649A7DF7D7602D4F74FA33742'.
    APPEND wa_word TO sb.
    wa_word = 'BA7C90459CEE60B8BCF46B2ED3822740'.
    APPEND wa_word TO sb.
    wa_word = 'F12C7F998FEDB266D4A2006899BC9BBE'.
    APPEND wa_word TO sb.
    wa_word = '24A19947ECAA8C71D4082471D5118E9D'.
    APPEND wa_word TO sb.
    wa_word = 'B3916CF7699A17FF3320F46ABF0F7315'.
    APPEND wa_word TO sb.
    wa_word = '0801F2E25664526C43B7D4B7D62D1C7E'.
    APPEND wa_word TO sb.
    wa_word = '858EFC16C2B19EE1500061AFC700C47B'.
    APPEND wa_word TO sb.
    wa_word = '636920D8193602A51E39F62EB78C1B6B'.
    APPEND wa_word TO sb.
    wa_word = '71574E6975094C299724454621A19045'.
    APPEND wa_word TO sb.
    wa_word = 'A458FEA3A059134014214F74B26EB1BE'.
    APPEND wa_word TO sb.
    wa_word = 'F4933D7EE4183A3EBF8B88406A366EB4'.
    APPEND wa_word TO sb.
    wa_word = '0D95748F3F54989A4D95FC1D5748AB2F'.
    APPEND wa_word TO sb.
    wa_word = '728EB6585B429D6596B591AFBC946E79'.
    APPEND wa_word TO sb.
    wa_word = '718BCD586B8FE4D670F4DDD3C6A376D2'.
    APPEND wa_word TO sb.
    wa_word = '82154AEE99F73FD666A02F456549C2C8'.
    APPEND wa_word TO sb.
    wa_word = '7B54A41DA1D29C07BFBC09EC530FF8EE'.
    APPEND wa_word TO sb.
    wa_word = 'C25A59B5EFE830F503BD9785468DDE7D'.
    APPEND wa_word TO sb.
    wa_word = '9C30D5394D2D38E67FAC6DD0D5730A1D'.
    APPEND wa_word TO sb.
    wa_word = '2AF26013F0255DC131CB85044CD04DC6'.
    APPEND wa_word TO sb.
    wa_word = 'C5D1B0234CDD208696EB27B32939BBDB'.
    APPEND wa_word TO sb.
    wa_word = '286085F08470EB2655FD3941A9BA4650'.
    APPEND wa_word TO sb.
    wa_word = 'CA4179186382E9C6DA2547E6AC9526E8'.
    APPEND wa_word TO sb.
    wa_word = 'B8DB38EF021ECC5EABCA0A9ABE5EE304'.
    APPEND wa_word TO sb.
    wa_word = '8E79DCB009686B3F28507825A1FAD5F0'.
    APPEND wa_word TO sb.
    wa_word = '603A180E3EBAEFC9530429F46A2D519A'.
    APPEND wa_word TO sb.
    wa_word = '6C9E0E8B3C9718140A2C86DA63EF8CE2'.
    APPEND wa_word TO sb.
    wa_word = 'B01E8A3E6B6A70A1E9B66DFB9A86EE22'.
    APPEND wa_word TO sb.
    wa_word = 'D71577C1687F358468DC1462C089C2B8'.
    APPEND wa_word TO sb.
    wa_word = 'BD314B2752A0E286D748690043242EF6'.
    APPEND wa_word TO sb.
    wa_word = '78AF2FDAB79C5305680EC0A4A51E03AA'.
    APPEND wa_word TO sb.
    wa_word = '55605C60AA50073727A18DEE9CF2D0A4'.
    APPEND wa_word TO sb.
    wa_word = 'E65525F33E07841C4F3FFEA283C061BA'.
    APPEND wa_word TO sb.
    wa_word = 'AA55AB947FDEAE5CE887AD8C9BE96A4D'.
    APPEND wa_word TO sb.
    wa_word = '574898628E7D44ECB58CE0068FE51550'.
    APPEND wa_word TO sb.
    wa_word = '63E814405716F2B87AF4D6B6BA645BD6'.
    APPEND wa_word TO sb.
    wa_word = '55CA396AB03ADA37AACE1E7C2826A2F9'.
    APPEND wa_word TO sb.
    wa_word = '2AAB10B6F0500C0DD3375FECA73A3AE1'.
    APPEND wa_word TO sb.
    wa_word = 'B4CC5C34F01C1F04CE78A3994BA99586'.
    APPEND wa_word TO sb.
    wa_word = '1141E8CE0200B3FF406B2A42EF5562E9'.
    APPEND wa_word TO sb.
    wa_word = 'A15486AFAE0CF51A20FE9E35C72FEFD3'.
    APPEND wa_word TO sb.
    wa_word = '7C72E9933CB574B2D9F385B9F752F7DA'.
    APPEND wa_word TO sb.
    wa_word = 'B3EE141125837A58EE39D7AB3F046F69'.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -