【问题标题】:Encrypt string in ABAP and decrypt in JavaScript在 ABAP 中加密字符串并在 JavaScript 中解密
【发布时间】:2018-06-08 08:10:03
【问题描述】:

我有一个 ABAP 类,它将字符串编码为 qr 代码并将此代码作为电子邮件发送。稍后,代码将由基于 JavaScript 的 SAPUI5 应用程序解码。

我不希望每个人都可以使用一些基本的条形码扫描仪应用程序来解码该二维码背后的字符串。这就是为什么我正在寻找一些想法来加密 ABAP 中的字符串并使用 JavaScript 解密它。也许还有一个简单的算法?只是字符串不应该给自己解码二维码的人提供有用的信息。

感谢您的提示和想法!

【问题讨论】:

  • 提示:仅仅依靠默默无闻的安全通常是个坏主意。了解 QR 码可以解码的人在看到它时也可能能够识别 base64 编码的文本。这在一定程度上取决于您要隐藏的具体内容,但如果它与远程相关,您并没有真正增加可靠的安全性。

标签: javascript algorithm encryption abap


【解决方案1】:

ABAP cl_hard_wired_encryptor 中的类正是你想要的。它使用base64加密,因此在JS中很容易解密。

这里是示例代码:

DATA: input_string  TYPE string VALUE `This is the house that Jack built`.

TRY.
    DATA(encrypted_string) = NEW cl_hard_wired_encryptor( )->encrypt_string2string( the_string = input_string ).
  CATCH cx_encrypt_error.
ENDTRY.

IF sy-subrc EQ 0.
  cl_demo_output=>begin_section( `Initial` ).
  cl_demo_output=>write_text( input_string ).
  cl_demo_output=>begin_section( `Encrypted` ).
  cl_demo_output=>write_text( encrypted_string ).
ELSE.
  cl_demo_output=>display( 'Error while encryption' ).
ENDIF.

TRY.
    DATA(reverted_string) = NEW cl_hard_wired_encryptor( )->decrypt_string2string( the_string = encrypted_string ).
  CATCH cx_encrypt_error.
ENDTRY.

IF sy-subrc EQ 0.
  cl_demo_output=>begin_section( `Decrypted` ).
  cl_demo_output=>write_text( reverted_string ).
  cl_demo_output=>display( ).
ELSE.
  cl_demo_output=>display( 'Error while decryption' ).
ENDIF.

【讨论】:

  • FWIW 使用非常常见的编码(例如 base64)不是完全加密,甚至不是混淆。 ABAP 类有一个奇怪的名字。
  • 同意,但这是我们在 ABAP 中所拥有的 :)
【解决方案2】:

ABAP 具有 SSF_KRN_ENVELOPE 函数,用于使用证书使用 RSA 加密数据。你可以使用它,我认为有用于解密它的 js 库。但是由于包含标准,数据量很大。

我更喜欢使用https://github.com/Sumu-Ning/AES 库,因此您可以使用更多小数据进行加密,而无需仅使用证书密钥。

【讨论】:

  • 当问题显示不需要非对称加密时,为什么建议使用 RSA。通常使用 AES 加密数据,因为它速度快、安全且没有数据大小限制。
  • 我尝试为用户提供更多选择。其中一个是 OOTB 功能,另一个是自定义。我认为更多的选择还不错。
猜你喜欢
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 2016-12-25
  • 1970-01-01
  • 2018-10-31
  • 2011-12-22
  • 2014-01-01
相关资源
最近更新 更多