首页 > 其他分享 >ABAP MD5加密

ABAP MD5加密

时间:2023-07-03 09:33:10浏览次数:34  
标签:return HH addUnsigned GG ABAP FF var 加密 MD5

1.ABAP MD5加密標準函數(不區分大小寫)

CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_CHAR'
    EXPORTING
      data           = lv_string1
    IMPORTING
      hash           = lv_string2
    EXCEPTIONS
      no_data        = 1
      internal_error = 2
      OTHERS         = 3.
  IF sy-subrc EQ 0.

 ENDIF.

 

2. 自定義MD5加密 區分大小寫

FUNCTION ZIF001_ABAP_MD5.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IV_STRING) TYPE  STRING
*"  EXPORTING
*"     REFERENCE(EV_MD5) TYPE  STRING
*"----------------------------------------------------------------------

  DATA: lv_js         TYPE REF TO cl_java_script,
        lv_javascript TYPE string,
        lv_return     TYPE string.
  lv_js = cl_java_script=>create( ).


  DATA:lv_cal_md5 TYPE string .
  lv_cal_md5 = 'md5_encrypt(''' && iv_string && ''');'.

  CONCATENATE lv_javascript
 'var rotateLeft = function(lValue, iShiftBits){'
 'return (lValue << iShiftBits)|(lValue >>> (32 - iShiftBits));'
 '}'
 ''
 'var addUnsigned = function(lX, lY){'
 'var lX4, lY4, lX8, lY8, lResult;'
 'lX8 =(lX & 0x80000000);'
 'lY8 =(lY & 0x80000000);'
 'lX4 =(lX & 0x40000000);'
 'lY4 =(lY & 0x40000000);'
 'lResult =(lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);'
 'if(lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);'
 'if(lX4 | lY4){'
 'if(lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);'
 'else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);'
 '}else{'
 'return (lResult ^ lX8 ^ lY8);'
 '}'
 '}'
 'var F = function(x, y, z){'
 'return (x & y)|((~x)& z);'
 '}'
 ''
 'var G = function(x, y, z){'
 'return (x & z)|(y &(~z));'
 '}'
 ''
 'var H = function(x, y, z){'
 ' return (x ^ y ^ z);'
 '}'
 ''
 'var I = function(x, y, z){'
 ' return (y ^(x |(~z)));'
 '}'
 ''
 'var FF = function(a, b, c, d, x, s, ac){'
 ' a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));'
 ' return addUnsigned(rotateLeft(a, s), b);'
 '};'
 ''
 'var GG = function(a, b, c, d, x, s, ac){'
 ' a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));'
 ' return addUnsigned(rotateLeft(a, s), b);'
 '};'
 ''
 'var HH = function(a, b, c, d, x, s, ac){'
 ' a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));'
 ' return addUnsigned(rotateLeft(a, s), b);'
 '};'
 ''
 'var II = function(a, b, c, d, x, s, ac){'
 ' a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));'
 ' return addUnsigned(rotateLeft(a, s), b);'
 '};'
 ''
 'var convertToWordArray = function(string){'
 'var lWordCount;'
 'var lMessageLength = string.length;'
 'var lNumberOfWordsTempOne = lMessageLength + 8;'
 'var lNumberOfWordsTempTwo =(lNumberOfWordsTempOne -(lNumberOfWordsTempOne % 64)) / 64;'
 'var lNumberOfWords =(lNumberOfWordsTempTwo + 1)* 16;'
 'var lWordArray = Array(lNumberOfWords - 1);'
 'var lBytePosition = 0;'
 'var lByteCount = 0;'
 'while (lByteCount < lMessageLength){'
 'lWordCount =(lByteCount -(lByteCount % 4)) / 4;'
 'lBytePosition =(lByteCount % 4)* 8;'
 'lWordArray[lWordCount]=(lWordArray[lWordCount]|(string.charCodeAt(lByteCount) << lBytePosition));'
 'lByteCount++;'
 '}'
 'lWordCount =(lByteCount -(lByteCount % 4)) / 4;'
 'lBytePosition =(lByteCount % 4)* 8;'
 'lWordArray[lWordCount]= lWordArray[lWordCount]|(0x80 << lBytePosition);'
 'lWordArray[lNumberOfWords - 2]= lMessageLength << 3;'
 'lWordArray[lNumberOfWords - 1]= lMessageLength >>> 29;'
 'return lWordArray;'
 '};'
 ''
 'var wordToHex = function (lValue){'
 ' var WordToHexValue ="",'
 ' WordToHexValueTemp ="",'
 ' lByte, lCount;'
 ' for (lCount = 0; lCount <= 3; lCount++){'
 ' lByte =(lValue >>> (lCount * 8))& 255;'
 ' WordToHexValueTemp ="0"+ lByte.toString(16);'
 ' WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);'
 '}'
 ' return WordToHexValue;'
 '};'
 ''
 'var uTF8Encode = function (string){'
 ' string = string.replace(/\x0d\x0a/g,"\x0a");'
 ' var output ="";'
 ' for (var n = 0; n < string.length; n++){'
 ' var c = string.charCodeAt(n);'
 ' if (c < 128){'
 ' output += String.fromCharCode(c);'
 '} else if ((c > 127)&&(c < 2048)){'
 ' output += String.fromCharCode((c >> 6)| 192);'
 ' output += String.fromCharCode((c & 63)| 128);'
 '} else {'
 ' output += String.fromCharCode((c >> 12)| 224);'
 ' output += String.fromCharCode(((c >> 6)& 63)| 128);'
 ' output += String.fromCharCode((c & 63)| 128);'
 '}'
 '}'
 ' return output;'
 '};'
 ''
 'function md5_encrypt(string){'
 ' var x = Array();'
 ' var k, AA, BB, CC, DD, a, b, c, d;'
 ' var S11 = 7,'
 ' S12 = 12,'
 ' S13 = 17,'
 ' S14 = 22;'
 ' var S21 = 5,'
 ' S22 = 9,'
 ' S23 = 14,'
 ' S24 = 20;'
 ' var S31 = 4,'
 ' S32 = 11,'
 ' S33 = 16,'
 ' S34 = 23;'
 ' var S41 = 6,'
 ' S42 = 10,'
 ' S43 = 15,'
 ' S44 = 21;'
 ' string = uTF8Encode(string);'
 ' x = convertToWordArray(string);'
 ' a = 0x67452301;'
 ' b = 0xEFCDAB89;'
 ' c = 0x98BADCFE;'
 ' d = 0x10325476;'
 ' for (k = 0; k < x.length; k += 16){'
 ' AA = a;'
 ' BB = b;'
 ' CC = c;'
 ' DD = d;'
 ' a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);'
 ' d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);'
 ' c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);'
 ' b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);'
 ' a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);'
 ' d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);'
 ' c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);'
 ' b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);'
 ' a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);'
 ' d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);'
 ' c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);'
 ' b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);'
 ' a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);'
 ' d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);'
 ' c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);'
 ' b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);'
 ' a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);'
 ' d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);'
 ' c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);'
 ' b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);'
 ' a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);'
 ' d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);'
 ' c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);'
 ' b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);'
 ' a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);'
 ' d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);'
 ' c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);'
 ' b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);'
 ' a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);'
 ' d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);'
 ' c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);'
 ' b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);'
 ' a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);'
 ' d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);'
 ' c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);'
 ' b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);'
 ' a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);'
 ' d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);'
 ' c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);'
 ' b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);'
 ' a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);'
 ' d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);'
 ' c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);'
 ' b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);'
 ' a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);'
 ' d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);'
 ' c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);'
 ' b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);'
 ' a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);'
 ' d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);'
 ' c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);'
 ' b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);'
 ' a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);'
 ' d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);'
 ' c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);'
 ' b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);'
 ' a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);'
 ' d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);'
 ' c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);'
 ' b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);'
 ' a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);'
 ' d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);'
 ' c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);'
 ' b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);'
 ' a = addUnsigned(a, AA);'
 ' b = addUnsigned(b, BB);'
 ' c = addUnsigned(c, CC);'
 ' d = addUnsigned(d, DD);'
 '}'
 ' var tempValue = wordToHex(a)+ wordToHex(b)+ wordToHex(c)+ wordToHex(d);'
 ' return tempValue.toLowerCase();'
 '}'
  lv_cal_md5
  INTO lv_javascript SEPARATED BY cl_abap_char_utilities=>cr_lf.

  ev_md5 = lv_js->evaluate( lv_javascript ).

ENDFUNCTION.

 

标签:return,HH,addUnsigned,GG,ABAP,FF,var,加密,MD5
From: https://www.cnblogs.com/WACBZWY/p/17521946.html

相关文章

  • java代码加密
    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.6</version><execution......
  • classfinal加密java代码并且启动
    maven插件方式配置参数解释: 参数说明-file加密的jar/war完整路径-packages加密的包名(可为空,多个用","分割)-libjarsjar/war包lib下要加密jar文件名(可为空,多个用","分割)-cfgfiles需要加密的配置文件,一般是classes目录下的yml或propertie......
  • 什么是 ABAP Domain 的 Conversion Routine
    ABAP(AdvancedBusinessApplicationProgramming)是一种高级业务应用编程语言,由德国软件公司SAPSE开发。ABAP用于开发和定制SAPERP系统。在SAPERP系统中,数据的组织和存储通过数据字典(DataDictionary)进行管理。数据字典中的一个重要组成部分是Domain。Domain是一个抽象层,用于定......
  • 使用 ABAP 调用 Adobe Document Service 生成 PDF 文档
    我以前在SAP成都研究院BYDForm开发团队工作过5年,负责BYDBO输出成PDF的功能开发。AdobeDocumentService(ADS)是SAPNetWeaverASJava堆栈的一部分,提供了用于创建和处理PDF文件的功能。在ABAP系统中,可以通过调用ADS服务来生成和处理PDF文档。这种集成使得ABAP开发人员能......
  • 授人以渔:如何获得当前登录 SAP ABAP 系统用户的主机名
    本文写作动机来自我的知识星球里一个朋友的提问。我们复习一下本教程第二篇文章里学习到的知识:1.ABAP标准培训教程BC400学习笔记之一:ABAP服务器的架构和一个典型的ABAP程序结构介绍这是ABAP系统典型的三层架构。广大SAP从业者,在自己本地电脑安装了SAPGUI,那么这......
  • 加密狗复制破解方法介绍
    目前计算机上主要采用的加密方法可分为两大类:钥匙盘方式和加密狗方式。钥匙盘方式不在本文的讨论范围,目前用这种加密方式的也比较少见。加密狗,也是目前流行的一种加密工具。它是插在计算机接口上的软硬件结合的软件加密产品。一般有USB口和并口两种,又称USB加密狗和并口加密狗,目前流......
  • 使用 ABAP 代码查找系统可用的 user exit
    ABAPUserExit是SAP系统中一种提供给客户扩展和修改标准程序的技术手段,这种机制允许客户在不修改SAP源代码的前提下,实现对标准程序的定制和功能增强。ABAP(AdvancedBusinessApplicationProgramming)是SAP的一种编程语言,用于开发企业级应用程序。在SAP系统中,有许多预先......
  • 使用纯 ABAP 开发 SAP UI5 应用(一):abap2UI5 开发环境搭建介绍
    我从SAP社区博客上了解到一个开源项目,名叫abap2UI5,作者是OblomovDev,这是Github项目地址:https://github.com/abap2UI5/abap2UI5这个项目最吸引ABAP开发人员之处在于:传统的ABAP搞定一切:仅仅依靠最基础的传统ABAP编程语言,就可以开发并运行SAPUI5应用。不需要......
  • 1.3 Metasploit 生成SSL加密载荷
    在本节中,我们将介绍如何通过使用Metasploit生成加密载荷,以隐藏网络特征。前一章节我们已经通过Metasploit生成了一段明文的ShellCode,但明文的网络传输存在安全隐患,因此本节将介绍如何通过生成SSL证书来加密ShellCode,使得网络特征得到隐藏,从而提高后门的生存能力和抵抗网络特征分析......
  • 使用 ABAP 正则表达式提高字符串解析的执行效率
    在ABAP(AdvancedBusinessApplicationProgramming)中,正则表达式(RegularExpressions)是一种强大的工具,可用于处理字符串和文本数据。正则表达式可以帮助您执行各种任务,如查找和替换文本、验证输入格式或拆分字符串。本文将介绍在ABAP中使用正则表达式的几种方法。使用CL_ABAP......