标题:VFP系统下如何实现 AES-128加密
只看楼主
lnfx2019
Rank: 2
等 级:论坛游民
帖 子:37
专家分:14
注 册:2019-8-20
得分:0 
SET LIBRARY TO myfll.fll ADDITIVE
SET LIBRARY TO vfpencryption71.fll ADDITIVE
lcPlainText = STRCONV('{"type":"fail","error":"E10006","error_description":"无返回结果!"}',9)   && DBCS转为utf-8
lcCiphertext = ""
lcKey = "1234567890123456"
lcCiphertext = STRCONV(Encrypt(lcPlainText,lcKey,0,0,0,16,16),15)
?STRCONV(Decrypt(STRCONV(lcCiphertext,16),lcKey, 0, 0, 0, 16, 16),11)    && utf-8转为DBCS
SET LIBRARY TO

这次虽然加密串与在线工具还是有点差异,但解密结果一致了。
十分感谢大家的关注与指导!
2021-06-04 17:04
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用lnfx2019在2021-6-4 15:46:01的发言:

十分感谢 radiofan  的回复!!!

SET LIBRARY TO myfll.fll ADDITIVE
SET LIBRARY TO vfpencryption71.fll ADDITIVE
lcPlainText = '{"type":"fail","error":"E10006","error_description":"无返回结果!"}'
lcCiphertext = ""
lcKey = "1234567890123456"
lcCiphertext = STRCONV(Encrypt(lcPlainText,lcKey,0,0,0,16,16),15)
?Decrypt(STRCONV(lcCiphertext,16),lcKey, 0, 0, 0, 16, 16)
SET LIBRARY TO
VFP中这组的加密结果为:
1CA3871BF40A3C5DE9F08BBBF693A9355B01760A57884D09E20F1BB5FB278BE90A4CE19F827F3A8DE7DD1D316BB814AC3ECC615D03576CAB342FB3D5CA4C4F39AE410DCBD360510C0583C13C7EDA80C4
VFP环境下解密回去, 也是原文,这个没有问题。

但用在线校验工具(http://tool.)测试   {"type":"fail","error":"E10006","error_description":"无返回结果!"}
加密结果为1CA3871BF40A3C5DE9F08BBBF693A9355B01760A57884D09E20F1BB5FB278BE90A4CE19F827F3A8DE7DD1D316BB814AC981826A61A97DF2AB7F875216A6DDDCECA176EC8A6959D79D6F77E8E3B4F3329
二者差异在 中文部分。


网页版,一是加密规则,二是对上传字符串的处理 ……

[此贴子已经被作者于2021-6-7 10:20编辑过]

2021-06-07 10:19
lnfx2019
Rank: 2
等 级:论坛游民
帖 子:37
专家分:14
注 册:2019-8-20
得分:0 
LOCAL lcPlainText
SET LIBRARY TO (LOCFILE("vfpencryption71.fll","FLL"))
***例如: 加密原文为【{"type":"fail","error":"E10006","error_description":"无返回结果!"}】,
***       秘钥为【1234567890123456】,
***       加密结果为【1CA3871BF40A3C5DE9F08BBBF693A9355B01760A57884D09E20F1BB5FB278BE90A4CE19F827F3A8DE7DD1D316BB814AC981826A61A97DF2AB7F875216A6DDDCECA176EC8A6959D79D6F77E8E3B4F3329】
m.lcKey = '1234567890123456'
m.lcPlainText ='{"type":"fail","error":"E10006","error_description":"无返回结果!"}'
****************************************  加密过程
tmp_sign=STRCONV(Encrypt(STRCONV(m.lcPlainText,9),m.lcKey ,0,0,2,16,16),15)
?tmp_sign
SET LIBRARY TO
************************************************************    以上处理加密后完全符合约定的加密结果。
但因要处理的加密内容较大,想将要加密的内容先存入 TXT 文本文件中,然后再读取到变量中,再进行加密处理,结果加密后的内容有偏差。

LOCAL lcPlainText
SET LIBRARY TO (LOCFILE("vfpencryption71.fll","FLL"))
***例如: 加密原文为【{"type":"fail","error":"E10006","error_description":"无返回结果!"}】,
***       秘钥为【1234567890123456】,
***       加密结果为【1CA3871BF40A3C5DE9F08BBBF693A9355B01760A57884D09E20F1BB5FB278BE90A4CE19F827F3A8DE7DD1D316BB814AC981826A61A97DF2AB7F875216A6DDDCECA176EC8A6959D79D6F77E8E3B4F3329】
m.lcKey = '1234567890123456'
&&&&&&   加密原文.txt  因要处理的内容较大,想保存于TXT文本文件中,然后再读取到变量中进行处理。
m.lcPlainText =(FileToStr("加密原文.txt"))

****************************************  加密过程
tmp_sign=STRCONV(Encrypt(STRCONV(m.lcPlainText,9),m.lcKey ,0,0,2,16,16),15)
?tmp_sign
SET LIBRARY TO

感觉是从TXT文件读取时与直接的变量有差异,但没找到处理方法,请高手指点!!
2022-07-23 14:53
lnfx2019
Rank: 2
等 级:论坛游民
帖 子:37
专家分:14
注 册:2019-8-20
得分:0 
发完帖子,就找到原因了,应该是读取TXT文件时,字符集有变化了, 先转换下,再按加密规则进行就可以了。

****************************************  加密过程1
m.lcPlainText =(FileToStr("加密原文.txt"))
tmp_sign=STRCONV(Encrypt(STRCONV(STRCONV(m.lcPlainText,11),9),m.lcKey ,0,0,2,16,16),15)
2022-07-23 15:03
sostemp
Rank: 4
等 级:业余侠客
威 望:8
帖 子:162
专家分:221
注 册:2009-6-2
得分:0 
以下是引用lnfx2019在2022-7-23 15:03:44的发言:

发完帖子,就找到原因了,应该是读取TXT文件时,字符集有变化了, 先转换下,再按加密规则进行就可以了。

****************************************  加密过程1
m.lcPlainText =(FileToStr("加密原文.txt"))
tmp_sign=STRCONV(Encrypt(STRCONV(STRCONV(m.lcPlainText,11),9),m.lcKey ,0,0,2,16,16),15)



有vfpencryption71的参数帮助文件 吗?
2022-07-24 09:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505935-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.205559 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved