1 REPORT ytestdzp.
2
3 FORM b .
4
5 DATA:lv_encrypt TYPE string. "加密前的string类型
6 DATA:lv_encrypt_x TYPE xstring. "加密前的xstring类型
7
8 DATA:lv_encrypt_after TYPE string. "加密后的string类型
9 DATA:lv_encrypt_after_x TYPE xstring. "加密后的xstring类型
10
11 DATA:lv_key TYPE string VALUE 'y5red17ocg5voImq', "key 密钥
12 lv_iv TYPE string VALUE '0000000000000000'. "iv 向量
13
14 DATA : lv_key_x TYPE xstring.
15 DATA : lv_iv_x TYPE xstring.
16
17 lv_encrypt = '5d1ceafcbd05470ca2fe969bed2e6151'. "加密前的数据
18
19 "string --> xstring
20 CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
21 EXPORTING
22 text = lv_key
23 IMPORTING
24 buffer = lv_key_x
25 EXCEPTIONS
26 failed = 1.
27
28 "string --> xstring
29 CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
30 EXPORTING
31 text = lv_iv
32 IMPORTING
33 buffer = lv_iv_x
34 EXCEPTIONS
35 failed = 1.
36
37 "string --> xstring
38 CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
39 EXPORTING
40 text = lv_encrypt
41 IMPORTING
42 buffer = lv_encrypt_x
43 EXCEPTIONS
44 failed = 1.
45
46 " encrypt using AES256
47 zcl_aes_utility=>encrypt_xstring(
48 EXPORTING
49 i_key = lv_key_x
50 i_data = lv_encrypt_x
51 i_initialization_vector = lv_iv_x
52 i_padding_standard = zcl_byte_padding_utility=>mc_padding_standard_pkcs_7 "字节填充模式
53 i_encryption_mode = zcl_aes_utility=>mc_encryption_mode_cbc
54 IMPORTING
55 e_data = lv_encrypt_after_x
56 ).
57
58 WRITE:'加密前:', lv_encrypt.
59
60 CALL FUNCTION 'SCMS_BASE64_ENCODE_STR'
61 EXPORTING
62 input = lv_encrypt_after_x
63 IMPORTING
64 output = lv_encrypt_after.
65
66 WRITE:/ '加密后:', lv_encrypt_after.
67
68 ENDFORM .
69
70 FORM a .
71
72 DATA:lv_decrypt TYPE string, "解密前的string类型
73 lv_decrypt_x TYPE xstring. "解密前的xstring类型
74
75 DATA:lv_decrypt_after TYPE string, "解密后的string类型
76 lv_decrypt_after_x TYPE xstring. "解密后的xstring类型
77
78 DATA:lv_key TYPE string VALUE 'IGcHiC4QUCXUlOx0', "key 设置对称算法的密钥
79 lv_iv TYPE string VALUE '0000000000000000'. "iv 设置对称算法的初始化向量
80
81 DATA lv_key_x TYPE xstring .
82 DATA lv_iv_x TYPE xstring .
83
84
85 lv_decrypt = 'GQ3225d7mwmj3pbHoBRsL5piGEdiYWy9pB9YwpkLkNdKMuPOd5etReMf3hgES0zdCxGsHoOjCnPLru BgeXPz1tLEXGlp3' &&
86 'q+Xk2K3Re+PMMs+qK1RAmpJpLB5w2pKMhqTKXeh2nKlGFgyHn6tgjRiAzwTM0nWM' &&
87 'cYFoDJZPw6kJOHLEF40zv6FSfnk7NvFrG44TdF/B/NAR4FGOKC+AmJhtYxUnXlvkt3wDxqGjHML3//b B1xLWmluBEANj5NXveq+'.
88
89 " base64 --> xstring
90 CALL FUNCTION 'SSFC_BASE64_DECODE'
91 EXPORTING
92 b64data = lv_decrypt
93 IMPORTING
94 bindata = lv_decrypt_x
95 EXCEPTIONS
96 ssf_krn_error = 1
97 ssf_krn_noop = 2
98 ssf_krn_nomemory = 3
99 ssf_krn_opinv = 4
100 ssf_krn_input_data_error = 5
101 ssf_krn_invalid_par = 6
102 ssf_krn_invalid_parlen = 7.
103
104 "string --> xstring
105 CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
106 EXPORTING
107 text = lv_key
108 IMPORTING
109 buffer = lv_key_x
110 EXCEPTIONS
111 failed = 1.
112
113 "string --> xstring
114 CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
115 EXPORTING
116 text = lv_iv
117 IMPORTING
118 buffer = lv_iv_x
119 EXCEPTIONS
120 failed = 1.
121
122 " AES解密
123 zcl_aes_utility=>decrypt_xstring(
124 EXPORTING
125 i_key = lv_key_x
126 i_data = lv_decrypt_x
127 i_initialization_vector = lv_iv_x
128 i_encryption_mode = zcl_aes_utility=>mc_encryption_mode_cbc
129 i_padding_standard = zcl_byte_padding_utility=>mc_padding_standard_pkcs_7 "字节填充模式
130 IMPORTING
131 e_data = lv_decrypt_after_x ).
132
133 WRITE: / '解密前:' , lv_decrypt.
134
135 "Xstring --> string
136 lv_decrypt_after = cl_abap_codepage=>convert_from(
137 EXPORTING
138 source = lv_decrypt_after_x
139 ).
140
141 WRITE: / '解密后:' , lv_decrypt_after.
142
143 ENDFORM .
使用前需要用ABAPGIT导入加密解密的类
711

被折叠的 条评论
为什么被折叠?



