我们需要对字符串进行加密,就像Genexus (17U10和csharp,如果重要的话)使用站点密钥加密面板的参数一样。
为了更好地理解,第一个是带有未加密参数的url,第二个是带有通过站点密钥加密的参数的url。
http://localhost/TestVersione17U10.NETFrameworkEnvironment/webpanel3.aspx?par1=hello
http://localhost/TestVersione17U10.NETFrameworkEnvironment/webpanel3.aspx?ROndRLvw5t80mViNc0wdKO7XYc-OgWL61k9lDimrqI0
在wiki中阅读时,我相信genexus使用了存储在application.key文件中的密钥,并使用了双重算法。
7E2E22D26F2989E2444852A85E57867
这是我在文件中的关键,我用各种方法尝试从第一个字符串开始获得第二个字符串,但没有成功。
本机Encrypt64方法没有给出结果,生成的字符串是不同的。
我还注意到,当我调用另一个面板时,相同的参数被不同的加密,所以我相信它也以某种方式使用面板名称。( webpanel2.aspx?mY8XtkZ-3eBJKsDIFk-zX3DP2PuQC2LHIkqwFtE1CZw )
我做错了什么?钥匙出问题了吗?除了Encrypt64,您还使用其他方式加密吗?
发布于 2022-10-21 18:31:48
我不知道你到底想实现什么。我是说,你想要存储这个链接吗?您需要它才能从“非GX应用程序”调用吗?
无论如何,正如您所说的,对象名包含在URL加密算法中。该算法不能作为GX开发人员直接使用的“函数”。然而,在Genexus中有两种类似的方法:
&GXKey = GetSiteKey()
&GXEncryptionTmp =“webpanel3.aspx 3.aspx”+UrlEncode(“hello”)+“+ UrlEncode("world")
&EncryptedParms= "?“+ UriEncrypt64( &GXEncryptionTmp + CheckSum(&GXEncryptionTmp,6),&GXKey)
注意:您必须启用“非标准函数”(https://wiki.genexus.com/commwiki/servlet/wiki?8013,Standard%20Functions%20property%20at%20Object%20level)
如果需要从非GX应用程序调用,可以使用to选项:
(即GXClassses )
https://stackoverflow.com/questions/74140717
复制相似问题