📄 encryption.txt
字号:
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 + -