在ABAP中加密字符串并在JavaScript中解密

时间:2018-06-08 08:10:04

标签: javascript algorithm encryption abap

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

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

感谢您的提示和想法!

2 个答案:

答案 0 :(得分:1)

ABAP 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. 中有一个类可以完全满足您的要求。它使用base64加密,因此可以在JS中轻松解密。

这是示例代码:

import win32com.client
Excel = win32com.client.gencache.EnsureDispatch('Excel.Application')

win32c = win32com.client.constants

wb = Excel.Workbooks.Add()
Sheet1 = wb.Worksheets("Sheet1")

TestData = [['Country','Name','Gender','Sign','Amount'],
             ['CH','Max' ,'M','Plus',123.4567],
             ['FR','Max' ,'M','Minus',-23.4567],
             ['CH','Max' ,'M','Plus',12.2314],
             ['SP','Max' ,'M','Minus',-2.2314],
             ['CH','Sam' ,'M','Plus',453.7685],
             ['CH','Sam' ,'M','Minus',-53.7685],
             ['CH','Sara','F','Plus',777.666],
             ['CH','Sara','F','Minus',-77.666],
             ['DE','Hans','M','Plus',345.088],
             ['DE','Hans','M','Minus',-45.088],
             ['DE','Paul','M','Plus',222.455],
             ['DE','Paul','M','Minus',-22.455]]

for i, TestDataRow in enumerate(TestData):
    for j, TestDataItem in enumerate(TestDataRow):
        Sheet1.Cells(i+2,j+4).Value = TestDataItem

cl1 = Sheet1.Cells(2,4)
cl2 = Sheet1.Cells(2+len(TestData)-1,4+len(TestData[0])-1)
PivotSourceRange = Sheet1.Range(cl1,cl2)
PivotSourceRange.Select()
wb.Worksheets.Add()
Sheet2 = wb.Worksheets("Sheet2")
cl3=Sheet2.Cells(4,1)
PivotTargetRange=  Sheet2.Range(cl3,cl3)
PivotTableName = 'ReportPivotTable'
PivotCache = wb.PivotCaches().Create(SourceType=win32c.xlDatabase, SourceData=PivotSourceRange, Version=win32c.xlPivotTableVersion14)
PivotTable = PivotCache.CreatePivotTable(TableDestination=PivotTargetRange, TableName=PivotTableName, DefaultVersion=win32c.xlPivotTableVersion14)

PivotTable.PivotFields('Name').Orientation = win32c.xlRowField
PivotTable.PivotFields('Country').Orientation = win32c.xlPageField
PivotTable.PivotFields('Country').CurrentPage = 'SP'
PivotTable.PivotFields('Gender').Orientation = win32c.xlColumnField
PivotTable.PivotFields('Sign').Orientation = win32c.xlColumnField
DataField = PivotTable.AddDataField(PivotTable.PivotFields('Amount'))

Excel.Visible = 1

wb.SaveAs('ranges_and_offsets.xlsx')
Excel.Application.Quit()

答案 1 :(得分:-1)

ABAP具有SSF_KRN_ENVELOPE函数,用于使用RSA使用证书对数据进行加密。您可以使用它,我认为有用于解密它的js库。但是由于标准技术的存在,数据非常庞大。

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