继续问一个adoquery和DBgrid的问题

Thinbug 2004-12-10 01:32:05
表ttable
id idcard(加密后的身份证号码),一个身份证加密后可能得到不同的idcard)
user1 610YSHXZSDGHTT3
user2 410HSKLDGSQWRER
user3 620DFGBYTJGHETX

我在adoquery1.sql中想搜索idcard='XXXXX'未加密的。 (同一个身份证可以注册多个id)
这个要如何搜索?如果不能用sql语句实现的话,那在adoquery1.open以后有没办法在找到的记录中过滤掉不符合的,并显示到DBgrid里
...全文
182 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lencon 2004-12-10
  • 打赏
  • 举报
回复
如考虑到加密

还可以在ID原码字段中不显示原码,而显示单向运算加密码AAA

这样用户输入的'XXXX'值再单向运算到AAA
再通过ADOQUERY去过滤AAA就能得到所有的ID
lencon 2004-12-10
  • 打赏
  • 举报
回复
过滤看样不可行,建议将原表加一列,ID原码字段
先还原,后用adoquery1
adoquery1.filer:='idcard=''XXXXX''';
DBGRID显示时将ID原码字段隐藏

因为'XXXXX'运算加密后出直接过滤,可能与表中还有不一致.
Thinbug 2004-12-10
  • 打赏
  • 举报
回复
to 回复人: lencon() ( ) :当然有我要用的道理啊。



除了临时表,还有什么方法?
lencon 2004-12-10
  • 打赏
  • 举报
回复
建议你不用这种算法加密,干嘛要一对多呢

123 经过单项加密后变成 AD3DF存到库里

测试 XXX 经过单项加密后能否变成 AD3DF
能过
不能则不过
Thinbug 2004-12-10
  • 打赏
  • 举报
回复
我搜索61100394309,可能在库中有很多个,因为一个号码加密后可能不相同
可能会有很多条数据,这个方法还要应用到另一个库,如果搜索出10000个符合条件的
adoquery1.filer:=idcard 'x1' and 'x2' ...........x10000...不会吧filer撑爆炸吧?
ssq237712 2004-12-10
  • 打赏
  • 举报
回复
给我的感觉直接查询或过滤似乎是不可能的啊。
曲折一点的办法:建一个临时表,把加密后的身份证还原再查。
Thinbug 2004-12-10
  • 打赏
  • 举报
回复
to:cqbonny(不是我不明白,这世界变化快)
好象不行,我把XXXX加密后可能不等于记录中的任何一条数据(一个身份证加密后可能得到不同的idcard)

我只能把搜索到的数据,一条一条的还原,然后过滤。
cqbonny 2004-12-10
  • 打赏
  • 举报
回复
用adoquery1的filter过虑就可以了。
adoquery1.filered:=false;
adoquery1.filer:='idcard=''XXXXX''';
adoquery1.filered:=true;
应该能够达到你的要求
Thinbug 2004-12-10
  • 打赏
  • 举报
回复
是双向的
dh9450 2004-12-10
  • 打赏
  • 举报
回复
你的加密算法是单向的吗
如果不能还原成明码 好象不可能

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧