url,DES加密解密

现在想在url上,通过链接传参,需要传一个参数号码,对号码进行encryptDes加密,然后再对传过来的加密参数进行DecryptDes解密,然后将解密的内容放到数据集进行使用查询,使用号码进行加密可以实现,但是对加密后的解密为号码就会出现错误,求大佬们指点迷津,万分感谢2d204b3a6374c770a36d09e432a5cb6.pngimage.png

a993ff3959664df781107ec77473433.png

FineReport CYJXJ 发布于 2025-6-17 14:51 (编辑于 2025-6-17 15:48)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
snrtuemcLv8专家互助
发布于2025-6-17 14:53(编辑于 2025-6-17 15:07)

sql改成

where abc='${DecryptDes(username,"12345678")}'

=========

image.png

  • CYJXJ CYJXJ(提问者) 为什么第二部分的AaoyaMz10Rr+uVm31GQvyw==解密不回’01030004‘,是什么原因啊
    2025-06-17 14:54 
  • CYJXJ CYJXJ(提问者) 这个不行吧,数据集里面参数都输入不了,上面补充了
    2025-06-17 14:57 
  • snrtuemc snrtuemc 回复 CYJXJ(提问者) 这个写法,username可以识别的啊,你可以试试这个写法
    2025-06-17 14:58 
  • CYJXJ CYJXJ(提问者) 回复 snrtuemc 我上面补的图,是没办法获取,难道url写的这边可以识别到?然后数据集里面识别不到吗?
    2025-06-17 14:59 
  • snrtuemc snrtuemc 回复 CYJXJ(提问者) 你要sql完整的啊,例如 SELECT * FROM 表
    where abc='${DecryptDes(username,"12345678")}'
    这样才可以,sql预览里面的会是错误显示,你可以看看
    2025-06-17 15:01 
最佳回答
0
用户k6280494Lv6专家互助
发布于2025-6-17 14:53

'${DecryptDes()}' --sql里面这样使用

  • CYJXJ CYJXJ(提问者) sql按照这个书写好像没有效果,可以明实在如何解决吗?
    2025-06-17 15:16 
最佳回答
0
Yours飞飞Lv5见习互助
发布于2025-6-17 15:04
一、加密传输实现步骤

1️⃣ 参数加密与转码在生成URL链接前,使用EncryptDes(号码字段,密钥)加密号码,并通过encodeURIComponent对加密结果进行二次转码。示例公式:


var key = "ABCD1234"; // 必须是8位随机字符串

var encrypted = EncryptDes($号码, key);

encodeURIComponent(encrypted)

实际生成URL示例:/test.cpt?encryptedParam=XXXXX1

2️⃣ URL特殊字符处理加密后的字符串可能包含+、/等特殊符号,必须转码为%2B、%2F形式。可通过公式自动处理:REPLACE(encryptedStr,"+","%252B")5

二、解密使用方案

3️⃣ 模板参数接收在报表参数栏新增encryptedParam参数,接收URL传入值

4️⃣ 参数解密在报表单元格中使用DecryptDes($encryptedParam,密钥)进行解密,例如A1单元格写:

=DecryptDes($encryptedParam, "ABCD1234"){{常用函数集合插件-1493.md}}

5️⃣ 数据集查询应用在数据集SQL中使用解密后的号码查询数据:

SELECT * FROM 客户表 WHERE 手机号='${号码}'
三、效果验证流程

加密传递测试流程(操作步骤:1. 访问带加密参数的URL 2.检查单元格解密结果 3.验证数据集取数正确性)

  • CYJXJ CYJXJ(提问者) 我上面的案例图,就是按照这个来的呢,但是不知道哪出问题了
    2025-06-17 15:15 
最佳回答
0
FR-LeonLv4初级互助
发布于2025-6-17 15:36
  1. 加密过程

    • 使用EncryptDes(参数1,参数2)函数进行加密,第一个参数为要加密的号码,第二个参数为8位的随机不固定字符串作为key。

    • 示例:EncryptDes(A1,B1),其中A1为号码,B1为8位key。加密示例

  2. URL传参

    • 加密后的字符串可能包含特殊字符,需要使用encodeURIComponent()对加密后的字符串进行转码后再嵌入URL。

    • 示例:window.location="http://...&t="+encodeURIComponent(EncryptDes(A1,B1))

  3. 解密过程

    • 使用DecryptDes(参数1,参数2)函数进行解密,第一个参数为加密后的字符串,第二个参数为加密时使用的相同key。

    • 示例:DecryptDes(加密字符串, key),返回原始号码。解密示例

  4. 常见错误排查

    • 确保加密和解密使用的key完全相同(包括大小写)。

    • 检查是否在加密或解密过程中对字符串进行了额外的编码/解码操作。

    • 如果遇到"final block not properly padded"错误,可能是JDK环境问题,建议使用标准JDK而非OpenJDK。

  5. 数据集使用

    • 将解密后的号码作为参数传递给数据集进行查询时,确保数据类型一致(如都是字符串或数字)。

请检查您的实现是否符合以上要点,特别是key的一致性和URL编码的正确性。如果问题仍然存在,可以提供更详细的错误信息以便进一步分析。

  • 5关注人数
  • 57浏览人数
  • 最后回答于:2025-6-17 15:48
    请选择关闭问题的原因
    确定 取消
    返回顶部